web-dev-qa-db-ja.com

SSH接続の管理

Linuxサーバーで、現在のすべてのSSH接続のリストを見つける方法、または特定のSSH接続を切断する方法を教えてください。

9
Cerin

これをインタラクティブに実行する場合は、whoを呼び出して、リモートホストからのユーザーがいるかどうかを確認するのが最も簡単です。

[you@Host]$ who
user1      :0           Feb  8 09:45
user1      pts/1        Feb 14 17:56 (:0.0)
malcolm    pts/3        Feb 15 17:50 (cockpit.serenity.com)
reynold    pts/2        Feb 15 17:48 (Host123.firefly.co.uk)

もちろん、これは絶対に簡単なことではありませんが、必要に応じて入力して人間の目で簡単に処理することは非常に簡単です。

@gravyfaceが指摘したように、-uオプションwhoは、接続を終了するためにkillに渡すことができる関連PIDも出力します。

12
Shawn Chin

Lsofを使用するのはどうですか?

# lsof -i |grep ":ssh"

sshd    1943      root    3u  IPv6   5698       TCP *:ssh (LISTEN)
sshd    1943      root    4u  IPv4   5700       TCP *:ssh (LISTEN)
sshd    3217      root    3r  IPv4   9687       TCP www.example.com:ssh->192.168.61.11:7341 (ESTABLISHED)
sshd    3220      user1   3u  IPv4   9687       TCP www.example.com:ssh->192.168.61.11:7341 (ESTABLISHED)
sshd    3327      root    3r  IPv4  10595       TCP www.example.com:ssh->192.168.61.11:7385 (ESTABLISHED)
sshd    3330      user2   3u  IPv4  10595       TCP www.example.com:ssh->192.168.61.11:7385 (ESTABLISHED)

その後、問題のある接続を強制終了できるはずです(たとえば、user2を切断するため)。

# kill -9 3330
8
user62491

Ssh接続を表示するには、netstat -atn | grep ':22'を実行します。ポート22のすべての接続が表示されます。

接続をドロップするには、ps-axを使用してsshd(SSHデーモン)のPIDを見つけてみてください。

編集:bashセッション(または同等のシェル)のPIDを見つけることができると思います。それらを大丈夫に落とすべき殺害。

別のリソース: this thread には、この件に関するいくつかのヒントがあります。

1
Rodrigo Hahn

これを試して:

$ ps aux | grep sshd

それらを切断するには、kill PID(ここでPIDは2番目の列のプロセスIDです)、root権限を持っているか、問題のユーザーである場合。

0
ltn100