管理 SSH 连接

管理 SSH 连接

在 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 PIDPID第二列中的进程 ID 在哪里),如果您具有 root 权限,或者是相关用户。

相关内容