我正在尝试通过 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