我开始遇到最奇怪的问题,当我尝试通过 SSH 连接到我旁边的服务器时,它拒绝连接。如果我继续尝试,它最终会连接。
~ $ ssh 192.168.0.10
ssh: connect to host 192.168.0.10 port 22: Connection refused
~ $ ssh 192.168.0.10
ssh: connect to host 192.168.0.10 port 22: Connection refused
~ $ ssh 192.168.0.10
ssh: connect to host 192.168.0.10 port 22: Connection refused
~ $ ssh 192.168.0.10
ssh: connect to host 192.168.0.10 port 22: Connection refused
~ $ ssh 192.168.0.10
[email protected]'s password: <--- Connected here
我的第一个想法是这是我的网络上某种 DHCP 引起的 IP 冲突,但仔细检查后发现事实并非如此。
奇怪的是,一切都是随机的,有时它立即起作用,有时则需要 100 次尝试。有时在我的笔记本电脑上(通过 WiFi)它第一次起作用,其他时候失败,而我的有线台式机过去总是可以正常工作,但现在开始出现同样的行为。
有人遇到过这种情况吗?我应该查看服务器上的哪些日志来帮助找出导致这种奇怪行为的原因?
该服务器正在运行 Ubuntu 20.04
答案1
如果这对您有帮助,我也遇到过类似的问题。
排除之后fail2ban
,sshd_config
我发现我使用了ssh 端口ufw
规则LIMIT
。我允许 SSH,现在它可以正常工作了。问题是连接太多。
答案2
这个“服务器”是否有面向公众的 SSH 端口?
如果您采用默认设置,则可能会有人试图强行登录您的服务器,MaxStartups
服务器将在任何给定时间点仅允许有限数量的传入连接尝试,并拒绝其余的连接尝试。
在这种情况下,您将看到的日志将是大量的身份验证失败/var/log/auth.log
。
您还可能会被其他入侵防御系统拒绝,也许是通过 netfilter 或其他方式实现的。
假设这是 MaxStartups 或其他入侵防御系统的结果,您通常不应该让 SSH 面向公众,或者如果它是面向公众的,则将传入地址限制为受信任的子集或需要 VPN 等。
将 ssh 放在非标准端口上可以帮助减少来自互联网的探测和暴力破解。