如何正确解决ubuntu服务器上的ssh错误“ssh_exchange_identification:read:Connection reset by peer”

如何正确解决ubuntu服务器上的ssh错误“ssh_exchange_identification:read:Connection reset by peer”

与以下问题和答案密切相关: 如何修复“ssh_exchange_identification:读取:对端重置连接”错误?

我的信誉太低,无法评论或提供答案建议。以下是案例描述和答案。

尝试 ssh 连接服务器时,错误消息与上述问题相同(ssh_exchange_identification:读取:对等方重置连接)。

doe@server1 ~ $ ssh [MY_SERVER_IP]
ssh_exchange_identification: read: Connection reset by peer

SSH-V没有提供任何相关的附加信息。正如错误消息所暗示的那样,连接已重置,因此不存在连接问题,并且已建立连接,ssh 服务在服务器上运行正常。

因此,我发现主机被添加到/etc/hosts.deny. 参赛作品为:sshd: [我的主机IP]。每当我从主机拒绝文件(在客户端上使用不同的 IP 地址),我通常可以从最初失败的主机 IP 地址登录一次。其他 IP 地址没有同样的限制。我可以从其他 IP 地址登录任意多次。

服务器是 Ubuntu 18.04.5 LTS,位于本地网络中。服务器有很多网络服务器内容和实验。服务器经常暴露在互联网上,因此它有防火墙来保持只打开选定的端口。它还拒绝主机失败禁止处理大量未经授权的登录尝试。几天前服务器进行了升级,此后开始出现此问题。无论如何,据说阻止访问的程序是主要嫌疑人。我开始根据上述问题中的建议深入研究它们。

DenyHosts 使用 hosts.deny 来拒绝基于以下情况的访问/etc/denyhosts.conf配置文件和/var/log/auth.log日志文件分析确实如此。

查看 [MY_CLIENT_IP] 中的 DenyHosts 状态:

$ sudo grep -r "[MY_CLIENT_IP]"  /var/lib/denyhosts/
/var/lib/denyhosts/users-hosts:doe - [MY_CLIENT_IP]:1:Sun Oct 25 12:16:06 2020
/var/lib/denyhosts/users-hosts:jane - [MY_CLIENT_IP]:2:Tue Nov 10 18:16:20 2015
/var/lib/denyhosts/hosts-root:[MY_CLIENT_IP]:0:Sun Oct 25 12:16:06 2020
/var/lib/denyhosts/hosts-restricted:[MY_CLIENT_IP]:0:Sun Oct 25 12:16:06 2020
/var/lib/denyhosts/hosts:[MY_CLIENT_IP]:0:Sun Oct 25 12:16:05 2020
/var/lib/denyhosts/hosts-valid:[MY_CLIENT_IP]:1:Sun Oct 25 12:16:06 2020

删除 [MY_CLIENT_IP] 条目可以暂时解决问题,因为 DenyHosts 会在完成分析后将其放回原处。在此故障排除过程中,我还发现 fail2ban 的行为也发生了变化,下面是与此相关的内容。基本上,fail2ban 也开始讨厌我登录。

Fail2Ban 的工作方式略有不同(使用 IPTABLES 进行阻止),并且由于防火墙阻止访问,ssh 登录错误也有所不同:

doe@server1 ~ $ ssh [MY_SERVER_IP]
ssh: connect to host [MY_SERVER_IP] port 22: Connection refused

现在 fail2ban 也开始将 [MY_HOST_IP] 添加到sshd 监狱它用于阻止 IP。我还需要运行:

$ sudo fail2ban-client set sshd unbanip [MY_CLIENT_IP]

首先从上述文件/位置删除条目(停止服务后),我还复制了 auth.log 以供进一步分析,然后删除了 auth.log 并重新启动了服务器。我认为清除 auth.log 是必要的,以防止再次发生阻塞。

$ sudo cp /var/log/auth.log auth.log.copy
$ sudo rm /var/log/auth.log
$ sudo reboot

这样可以吗?或者什么才是处理该问题的正确方法?这解决了问题,但这是一种不好的做法吗?我是否误用或未能使用应用程序属性?有没有办法让 DenyHosts 和 Fail2Ban 从重启时开始读取 auth.log,或者它们是否应该默认这样做?我应该做其他事情或采取更优雅的步骤来解决问题吗?

附言:是的,我知道,我可以将我的主机列入白名单,开始使用密钥或开始更谨慎地打字。

相关内容