Answers:
如果您打算以交互方式执行此操作,则最简单的方法就是简单地调用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,然后您可以将其传递给该PID kill
以终止连接。
-u
会给你PID。
who -u
。杀死pid并没有终止我的远程计算机上的连接。但是,随后我lsof -i | grep ":ssh"
在@kce的答案中提出了一个建议,我得到了另一个pid。终止该进程将终止连接。也许由于ssh连接而启动了多个进程,并杀死了不终止连接的人所显示的进程。那是我的解释。
如何使用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
lsof -i tcp:22
,您将不需要grep。
ssh
并没有指定-p
选项..
要查看ssh连接,您可以执行netstat -atn | grep ':22'
。它显示了端口22上的所有连接。
要断开连接,您可以尝试使用查找sshd(SSH守护程序)的PID ps-ax
。
编辑:我认为您可以找到他们bash
会话的PID (或等效的Shell)。杀了他们应该没事了。
另一个资源:该主题对此主题有一些提示。