提示“ssh_exchange_identification:read:Connectionresetbypeer”错误怎么办?

本文介绍了使用SSH客户端登录Linux实例提示“ssh_exchange_identification: read: Connection reset by peer”错误的解决方案。

问题描述

通过SSH客户端登录Linux实例时,确认用户名和密码正确的情况下,遇到了如下错误信息。

ssh_exchange_identification: read: Connection reset by peer.
sshd[11949]: refused connect from 192.168.0.0 (192.168.0.0).

问题原因

出现该问题可能有以下原因:

  • ECS实例内的TCP Wrapper文件配置不正确:TCP Wrapper是Linux系统中的标准安全框架,用于控制应用程序的访问。其守护进程tcpd通过读取/etc/hosts.allow/etc/hosts.deny两个文件中的相关配置,决定是否允许进行TCP连接。如果/etc/hosts.allow/etc/hosts.deny文件配置错误,会导致SSH连接异常。您可以重新配置/etc/hosts.allow/etc/hosts.deny文件解决该问题,具体操作,请参见方法一:编辑TCP Wrapper文件

  • ECS实例内liblz4.so.1文件丢失:liblz4.so.1文件是liblz4.so.1.7.5文件的软链接,该文件丢失会导致SSH连接异常。更多详情,请参见方法二:创建liblz4.so.1软链接

  • 本地公网IP被云安全中心拦截:请将本地公网IP添加到白名单,具体操作,请参见方法三:在云安全中心添加白名单

  • 本地网络连接异常:请检查本地网络,具体操作,请参见方法四:检查本地网络

解决方案

方法一:编辑TCP Wrapper文件

参考以下步骤,通过修改配置文件动态设置访问策略,修改后无需重启服务器使配置生效。 本文以修改/etc/hosts.deny为例进行说明。

  1. 通过VNC方式登录ECS实例。

    具体操作,请参见通过密码认证登录Linux实例

  2. 执行如下命令,查看/etc/hosts.allow/etc/hosts.deny文件中,是否包含类似all:all:denysshd:IP地址:deny配置。

    cat /etc/hosts.deny
    • 如果不存在all:all:denysshd:IP地址:deny配置,说明不是TCP Wrapper导致,请执行其他方案进行排查。

    • 如果存在all:all:denysshd:IP地址:deny配置,请继续执行下一步。

  3. 修改/etc/hosts.deny文件。

    1. 打开/etc/hosts.deny文件。

    2. all:all:denysshd:IP地址:deny前加#号,注释掉该配置。

      # all:all:deny
      # sshd:IP地址:deny
    3. Esc键,退出编辑模式。

    4. 输入:wq,并按Enter键,保存并退出。

方法二:创建liblz4.so.1软链接

  1. 通过VNC方式登录ECS实例。

    具体操作,请参见通过密码认证登录Linux实例

  2. 执行如下命令,查找liblz4.so.1.7.5文件。

    find / -name "liblz4*"

    如果不存在liblz4.so.1.7.5文件,将其他正常ECS实例中的liblz4.so.1.7.5文件拷贝到该ECS实例/usr/lib64/中。

  3. 执行以下命令,创建软链接。

    ln -s liblz4.so.1.7.5 liblz4.so.1

方法三:在云安全中心添加白名单

如果在一个本地客户端网络连接ECS服务器时多次输入错误的登录信息,会导致此IP远程登录ECS的请求被拦截。您可以在云安全中心的设置中,添加本地IP至白名单,这样就不会对本地IP远程登录此服务器进行拦截,具体操作如下:

  1. 登录云安全中心控制台

  2. 在左侧导航栏,选择系统配置 > 功能设置

  3. 设置页签的其它配置子页签,单击安全管控区域的配置,跳转至安全管控控制台。

  4. 在左侧导航栏,选择白名单管理 > IP白名单

  5. IP白名单页面,单击添加

    具体操作,请参见安全管控

方法四:检查本地网络

请使用其他网络环境测试网络是否连接正常,例如手机4G网络,查看是否可以正常登录。

若可以正常登录,说明是本地网络问题,请自行排查。