在 Linux 服务器上,如何找到所有当前 SSH 连接的列表,或断开特定的 SSH 连接?
答案1
如果您打算以交互方式执行此操作,最简单的方法就是简单地调用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
终止连接。
答案2
使用 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)
然后你应该能够终止有问题的连接(例如,断开用户2):
# kill -9 3330
答案3
要查看 ssh 连接,您可以执行netstat -atn | grep ':22'
。它显示端口 22 上的所有连接。
要断开连接,您可以尝试使用 查找 sshd(SSH 守护进程)的 PI ps-ax
D。
编辑:我认为您可以找到其会话的 PID bash
(或等效 shell)。 将其杀死应该可以将其删除。
另一个资源:此主题对这个问题有一些建议。
答案4
尝试这个:
$ ps aux | grep sshd
要断开它们,您可以kill PID
(PID
第二列中的进程 ID 在哪里),如果您具有 root 权限,或者是相关用户。