无法通过 ssh 连接登录服务器

无法通过 ssh 连接登录服务器

通过 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 :22ps 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 系统上运行着两种不同的sshdsshd:一种是以 root 身份运行的“主”sshd,用于监听新连接;另一种是以用户 ID 身份运行的用户级 sshd,当建立连接并对用户进行身份验证时,主 sshd 会分叉。您使用 pkill 命令执行的操作是终止主 sshd,但不会终止已经运行的用户级 sshd。要解决此问题,请在运行 pkill 的主机上将用户 (su) 切换为 root,然后发出以下命令:service sshd restart

相关内容