SSH 错误 ssh_exchange_identification:读取:对端重置连接

SSH 错误 ssh_exchange_identification:读取:对端重置连接

我正在尝试通过 ssh 访问服务器,但得到“ssh_exchange_identification:读取:对等方重置连接“。当我将计算机移回家时,同一个客户端运行良好,但当计算机在工作办公室时显示错误。是否有可能是办公室网络中的某些 LAN 网络设置导致了此问题?我尝试了办公室网络中的其他计算机,同样的问题。

我可以更改服务器设置来解决这个问题吗?

客户端和服务器使用相同的 Debian“Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-2 (2014-11-06) x86_64 GNU/Linux”

在客户端,日志显示:

OpenSSH_6.7p1 Debian-3,OpenSSL 1.0.1j 2014 年 10 月 15 日
debug1:读取配置数据/home/client/.ssh/config
debug1:/home/client/.ssh/config 第 13 行:应用 navtk 选项
debug1:读取配置数据 /etc/ssh/ssh_config
debug1:/etc/ssh/ssh_config 第 19 行:应用选项 *
debug1:主机名已更改;重新读取配置
debug1:读取配置数据/home/client/.ssh/config
debug1:读取配置数据 /etc/ssh/ssh_config
debug1:/etc/ssh/ssh_config 第 19 行:应用选项 *
调试2:ssh_connect:needpriv 0
debug1:连接到 www.host.com [xx.xx.xx.xx] 端口 xx。
debug1:连接已建立。
debug1:身份文件/home/client/.ssh/用户类型1
debug1:key_load_public:没有此文件或目录
debug1:身份文件/home/client/.ssh/user-cert 类型 -1
debug1:启用协议 2.0 的兼容模式
debug1:本地版本字符串 SSH-2.0-OpenSSH_6.7p1 Debian-3
ssh_exchange_identification:读取:对等方重置连接

并登录服务器端

服务器正在监听::端口 443。
debug3:fd 5 不是 O_NONBLOCK
debug1:在调试模式下运行时服务器不会分叉。
debug3:send_rexec_state:输入 fd = 8 配置长度 735
调试3:ssh_msg_send:类型0
debug3:send_rexec_state:完成
debug1:rexec 启动 5 输出 5 newsock 5 pipe -1 sock 8
debug1:复制后的 inetd 套接字:3,3
debug1:getpeername 失败:传输端点未连接
debug1:get_remote_port 失败

答案1

“对端重置连接”表示 TCP 流从另一端异常关闭。我认为最可能的解释是处理连接的远程服务器进程崩溃,或者某些网络设备(如状态防火墙或负载平衡器)决定干扰连接。

如果可以,您需要在远程服务器上调试此问题。sshd通过 进行日志记录syslog,在典型的 Unix 系统上,日志条目将位于/var/log目录中的一个文件中。如果您很幸运,sshd每次中断会话时都会记录一些内容。

如果您在服务器上具有 root 访问权限,则可以运行 的调试实例sshd。成为 root 然后运行:

/path/to/sshd -ddd -p 1022

这将运行 SSH 服务器的一个实例,该实例将侦听端口 1022、接受一个连接并将调试信息打印到您的终端。照常运行您的客户端,但指定端口 1022 作为端口:

ssh -p 1022 user@host

服务器打印的调试信息有望清楚地表明正在发生的事情。

编辑:服务器输出表明服务器没有崩溃或故意关闭 TCP 连接。其他原因导致它关闭。我会查看服务器上安装的任何可能监视 TCP 会话的安全软件,以及可能属于本地网络的任何防火墙、负载平衡器或类似网络硬件。

答案2

当您被列入黑名单时(例如,因为您输入错误密码的次数过多),也会出现“ssh_exchange_identification:读取:对方重置连接”的情况。我的 Synology-NAS 就出现过这种情况。因此,请确认您连接的 IP 不在该列表中。

如果是 Synology,请在“控制面板”/“安全”/“帐户”下进行检查。

答案3

我遇到了同样的问题。目前看来问题出在我的 ISP 上。尝试对您的服务器进行跟踪路由。对我来说,这在到达服务器之前就失败了。

我的服务器是共享托管服务器。我的托管公司告诉我,他们使用 AT&T 或 Comcast 的其他客户也遇到了同样的问题。

我希望这会有所帮助,或者至少可以节省您在其他可能性上花费过多的时间。

答案4

原因可能有很多,但最有可能的原因之一可能是(就我而言)防火墙不允许 ssh / 端口 22

您可以通过以下方式允许 ssh 连接用户界面(一些提供商允许这样做)或者如果您有任何其他登录方法(例如 digitalocean 提供控制台按钮)您可以运行以下命令

sudo ufw allow ssh
sudo ufw allow 22

相关内容