排查SSH无法连接错误

日常排错一例

排查SSH无法连接错误

现有一台远程服务器,安装了Ubuntu Server系统,IP地址为 A.B.C.D 。突然有一天无法通过ssh远程连接,具体表现为持续等待最终超时。但是通过另一台不同IP地址的客户端却可以正常访问。

排查这个错误分三步。

检查 hosts.deny 文件

检查 /etc/hosts.deny 文件,看本机IP地址是否在其中。如果在,将其删除。

检查 denyhosts 服务

如果上述方法不起作用,则考虑 denyhosts 服务。

首先检查 denyhosts 服务是否在运行中。

sudo systemctl status denyhosts

如果服务已经在运行中,则挨个检查其配置文件:

sudo ls /var/lib/denyhosts/
hosts		  hosts-root   offset		  users-hosts	 users-valid
hosts-restricted  hosts-valid  suspicious-logins  users-invalid

如果本机IP在配置文件中,将其删除。

删除后重启服务。

sudo systemctl restart denyhosts

检查 iptables

如果仍然无法连接,考虑 iptables。

首先输出 iptables 规则:

sudo iptables -L

仔细检查其输出中是否有与本机IP相关的规则,如果有,其 target 是否为 DROP。

如果存在这样的规则,将其删除。

理论上,以上步骤完成后即可以通过ssh连接了。