如何修复ssh_exchange_identification: read: Connection reset by peer错误?

2021年11月18日22:25:30 发表评论 6,085 次浏览

修复ssh_exchange_identification: read错误介绍

远程计算机阻止了你尝试建立或维护的SSH 连接。“ssh_exchange_identification: read: Connection reset by peer”消息不够具体,无法立即解释触发错误的原因。

为了能够成功解决问题,我们首先需要确定其原因。本文对可能的原因进行了深入分析,并提供了最有效的解决方案。

通过阅读本教程,你将学习如何修复“ssh_exchange_identification: read: Connection reset by peer”错误。

先决条件

  • 访问远程服务器的必要权限
  • 具有 root 或sudo权限的用户帐户

是什么导致“Connection reset by peer”SSH 错误?

“ssh_exchange_identification: read: Connection reset by peer”错误表明远程机器突然关闭了传输控制协议 (TCP) 流。在大多数情况下,远程服务器的快速重启可能会解决临时中断或连接问题。

注意:基于网络的防火墙或负载平衡器有时会扭曲 IP 或安全权限。此类问题可以通过联系你的服务提供商来解决。

了解如何解决此问题并确定根本原因,可帮助你防止系统将来发生此类事件。“ssh_exchange_identification: read: Connection reset by peer”错误的最常见原因是:

  • 由于基于主机的访问控制列表,连接被阻止。
  • 入侵防御软件通过更新防火墙规则(Fail2ban、DenyHosts 等)来阻止你的 IP 。
  • 对 SSH 守护程序配置文件的更改。

检查 hosts.deny 和 hosts.allow 文件

hosts.deny中的hosts.allow文件是TCP包装。作为一项安全功能,这些文件用于限制哪些 IP 地址或主机名可以与远程机器建立连接。

注意:检查远程服务器上的hosts.denyhosts.allow文件,而不是本地客户端上。

如何编辑 hosts.deny 文件

访问远程服务器并使用首选文本编辑器打开hosts.deny文件。如果你在基于 Debian 的系统上使用nano,请输入以下命令:

sudo nano /etc/hosts.deny

空行和以“#”符号开头的行是注释。检查是否可以在文件中找到本地 IP 或主机名。如果存在,则应将其删除或注释掉,否则会阻止你建立远程连接。

如何修复ssh_exchange_identification: read: Connection reset by peer错误?

进行必要的更改后,保存文件并退出。尝试通过 SSH 重新连接。

如何编辑 hosts.allow 文件

修复ssh_exchange_identification: read错误:作为额外的预防措施,请编辑hosts.allow文件。首先应用hosts.allow中的访问规则。它们优先于hosts.deny文件中指定的规则。输入以下命令以访问hosts.allow文件:

sudo nano /etc/hosts.allow

向文件中添加主机名和 IP 定义了hosts.deny文件中设置的例外情况。

如何修复ssh_exchange_identification: read: Connection reset by peer错误?

例如,etc/hosts.deny文件中的严格安全策略将拒绝对所有主机的访问:

sshd : ALL
ALL : ALL

随后,你可以向 etc/hosts.allow 文件添加单个 IP 地址、IP 范围或主机名。通过添加以下行,仅允许以下 IP 与你的远程服务器建立 SSH 连接:

sshd : 10.10.0.5, LOCAL

请记住,这种限制性的安全设置可能会影响远程服务器上的管理功能。

检查fail2ban是否禁止了你的IP地址

如果你多次尝试连接,你的 IP 可能被入侵防御软件阻止。Fail2ban是一项旨在保护你免受暴力攻击的服务,它可能会将你的身份验证尝试误解为攻击。

Fail2ban 监控并动态更改防火墙规则以禁止表现出可疑行为的 IP 地址。它监控日志,比如我们之前编辑过的hosts.denyhosts.allow文件。

在我们的示例中,我们使用以下命令来检查iptables工具是否拒绝你尝试的连接:

sudo iptables -L --line-number

终端窗口中的输出将列出所有身份验证尝试。如果你发现防火墙确实阻止了你的 SSH 连接,你可以使用 fail2ban 将你的 IP 列入白名单。否则,该服务将不断阻止所有未来的尝试。要访问 fail2ban 配置文件,请输入以下命令:

sudo nano /etc/fail2ban/jail.conf

通过取消注释包含"ignoreip ="添加要列入白名单的 IP 或 IP 范围的行来编辑文件。

如何修复ssh_exchange_identification: read: Connection reset by peer错误?

Fail2ban 现在会例外,并且不会报告相关 IP 的可疑行为。

修复ssh_exchange_identification: read错误: 检查 sshd_config 文件

如果你继续遇到“ssh_exchange_identification: read: Connection reset by peer”错误,请检查身份验证日志条目。默认情况下,SSH 守护进程将日志信息发送到系统日志。在尝试登录失败后访问/var/log/auth.log文件。要查看最新的日志条目,请键入:

tail -f /var/log/auth.log

输出显示你的身份验证尝试的结果、有关你的用户帐户、身份验证密钥或密码的信息。

如何修复ssh_exchange_identification: read: Connection reset by peer错误?

该日志为你提供可帮助你查找 sshd 配置文件sshd_config 中可能存在的问题的信息对文件所做的任何更改都会影响建立 ssh 连接的条款,并导致远程服务器将客户端视为不兼容。要访问sshd_config文件类型:

sudo nano /etc/ssh/sshd_config

sshd 配置文件使你能够更改基本设置,例如用于身份验证的默认 TCP 端口或 SSH 密钥对,以及更高级的功能,例如端口转发。

如何修复ssh_exchange_identification: read: Connection reset by peer错误?

例如,该MaxStartups变量定义了系统在预定义时间段内接受的连接数。如果你的系统在短时间内建立大量连接,则可能需要增加此变量的默认值。否则,远程系统可能会拒绝其他尝试的 ssh 连接。

如何修复ssh_exchange_identification: read: Connection reset by peer错误?

每次编辑sshd_config文件时,请重新启动 sshd 服务以使更改生效:

service sshd restart

只编辑你熟悉的变量。由于配置文件错误,服务器可能无法访问。

修复ssh_exchange_identification: read错误总结

你已经彻底检查了“ssh_exchange_identification: read: Connection reset by peer”错误背后的最常见原因。反过来,通过查看每种可能性,你已经成功解决了问题,并且现在知道如何处理未来的类似问题。

潜在原因的数量很多,而且很难在各个方面进行故障排除。最终,如果错误仍然存​​在,则可能需要联系你的主机。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: