通过 ssh 端口 22 连接到服务器,并决定使用以下命令杀死与 root 用户连接的所有用户:
pkill -9 -u root
现在当我尝试通过[电子邮件保护],我收到消息:
ssh: connect to host 190.169.94.56 port 22: Connection refused
我确保 SSH 确实在端口 22 上运行。在服务器机器上,我运行:
netstat -untap | grep 190.169.94.56
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 190.169.94.9:41267 190.169.94.56:22 ESTABLISHED 29673/ssh
我确实 ping 了服务器 190.169.94.56 并且正确响应:
ping 190.169.94.56
PING 190.169.94.56 (190.169.94.56) 56(84) bytes of data.
64 bytes from 190.169.94.56: icmp_seq=1 ttl=64 time=0.524 ms
64 bytes from 190.169.94.56: icmp_seq=2 ttl=64 time=0.454 ms
64 bytes from 190.169.94.56: icmp_seq=3 ttl=64 time=0.423 ms
64 bytes from 190.169.94.56: icmp_seq=4 ttl=64 time=0.419 ms
--- 190.169.94.56 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.419/0.455/0.524/0.042 ms
我尝试更改端口,但结果相同。我该如何再次连接它?这是一台 Debian 机器,以防万一。
答案1
要检查它是否正在运行,您必须运行netstat -tnpl | grep :22
和ps aux | grep sshd
。即使您停止它,SSHD 也会保持您的连接打开,这样如果您在重新启动之前在 sshd_config 中犯了错误,您也不会失去对服务器的控制。
编辑:
我承认直到现在我才看到你的pkill -u root -9
命令。这是非常错误的,我会告诉你重启你的服务器,因为你杀死了重要的系统进程(如日志守护进程等)。
答案2
如果您的目标仅仅是断开与root
用户的所有连接,那么pkill
命令就是错误的。pkill
停止指定用户拥有的每个进程,它并不局限于只登录的用户。
您应该使用@Florin Asavoiae 的命令检查拒绝连接的服务器上正在运行的进程,然后使用/etc/init.d/ssh start
它启动sshd
。
如果您可以通过中间服务器创建新的 SSH 连接190.169.94.56
,则说明存在其他问题,可能是防火墙阻止了流量。
答案3
Linux 系统上运行着两种不同的sshd
sshd:一种是以 root 身份运行的“主”sshd,用于监听新连接;另一种是以用户 ID 身份运行的用户级 sshd,当建立连接并对用户进行身份验证时,主 sshd 会分叉。您使用 pkill 命令执行的操作是终止主 sshd,但不会终止已经运行的用户级 sshd。要解决此问题,请在运行 pkill 的主机上将用户 (su) 切换为 root,然后发出以下命令:service sshd restart