我设置了无密码 ssh 登录。我可以通过 ssh 连接,也可以使用 sftp。突然间,我无法再连接,ssh 冻结了。
- 服务器:Ubuntu 16.04
- 客户端:Ubuntu 18.04
ssh --vvv user@host
冻结于承诺:网络
...
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 60
debug1: Server accepts key: pkalg rsa-sha2-512 blen 279
debug2: input_userauth_pk_ok: fp SHA256:w7sj+s08FJPpL09IVtmXmGZOUgxVHGcgpjCL3vxzSaQ
debug3: sign_and_send_pubkey: RSA SHA256:w7sj+s08FJPpL09IVtmXmGZOUgxVHGcgpjCL3vxzSaQ
debug3: send packet: type 50
debug3: receive packet: type 52
debug1: Authentication succeeded (publickey).
Authenticated to <host> ([<IP>]:22).
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug3: send packet: type 90
debug1: Requesting [email protected]
debug3: send packet: type 80
debug1: Entering interactive session.
debug1: pledge: network
debug3: send packet: type 80
debug3: send packet: type 80
debug3: send packet: type 80
Timeout, server <host> not responding.
在发生这种情况之前,我在同一主机上以同一用户启动了另一个 ssh,并且它在 sign_and_send_pubkey 处冻结,因此我启动了之前提到的 ssh。
...
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 60
debug1: Server accepts key: pkalg rsa-sha2-512 blen 279
debug2: input_userauth_pk_ok: fp SHA256:w7sj+s08FJPpL09IVtmXmGZOUgxVHGcgpjCL3vxzSaQ
debug3: sign_and_send_pubkey: RSA SHA256:w7sj+s08FJPpL09IVtmXmGZOUgxVHGcgpjCL3vxzSaQ
debug3: send packet: type 50
Connection to <IP> port 22 timed out
我尝试从服务器重新安装 openssh-server 并从客户端重新安装 ssh。还重新启动了它们两个(服务器和客户端计算机)。
还尝试强制通过密码连接。它只是改变了
Authentication succeeded (password)
输出的行。有人说设置了
UsePAM no
,但是没有用。已尝试
-o IPQoS=0
并得到相同的输出。
在服务器上记录这些系统日志:
...
May 7 07:26:10 host systemd[1]: Started Session c103 of user <user>.
May 7 07:26:10 host systemd[1]: Started Session c104 of user <user>.
May 7 07:26:26 host systemd[1]: Started Session 47 of user <user>.
May 7 07:26:33 host systemd[1]: Started Session 48 of user <user>.
我认为这个问题出在客户端。因为我的朋友可以从他自己的电脑连接到服务器。
答案1
要调试您的 SSH 连接,最好查看/var/log/auth.log
。
IE
sudo tail -n 250 -f /var/log/auth.log
您的连接可能还会被诸如 之类的工具过滤或阻止fail2ban
。
检查它是否在你的服务器上运行:
sudo ps ax | grep fail2ban
如果它存在于您的服务器上,那么默认情况下它会扫描 auth.log 查找失败的登录尝试并禁止 IP 5 分钟。
如果您没有 fail2ban,请确保您的网络或防火墙没有问题。
用于dmesg
读取最新错误:
sudo dmesg -T
使用以下命令查看你的 iptables 规则:
sudo iptables -nvL
并检查接口是否存在错误和溢出:
sudo ifconfig | grep 错误
ifconfig
是 net-tools 的一部分,因此请确保它存在于你的 Ubuntu 上
sudo apt 安装 net-tools
答案2
在我的情况下,原因是 rsyslogd 崩溃了。我发现这是因为 /var/log/secure 中没有更多日志条目
因此我重新启动了服务 rsyslog restart,为我们解决了这个问题。