在Linux服务器上,我将如何find所有当前SSH连接的列表,或断开与特定SSH连接的连接?
如果您打算以交互方式执行此操作,最简单的方法就是简单地调用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也会打印出相关的PID,然后你可以通过kill来终止连接。
如何使用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
要查看ssh连接,可以执行netstat -atn | grep ':22' netstat -atn | grep ':22' 。 它显示了端口22上的所有连接。
要删除连接,您可以尝试使用ps-axfindsshd(SSH守护进程)的PID。
编辑:我想你可以find他们的bash会话(或同等的shell)的PID。 杀死应该放弃他们。
另一个资源: 这个线程有一些关于这个问题的提示。
尝试这个:
$ ps aux | grep sshd
要断开它们,你可以kill PID (其中PID是第二列中的进程ID),如果你有root权限,或者是有问题的用户。