ssh_exchange_identification:读取:对等方重置连接


105

我在OS X上尝试SSH进入ubuntu 12.04服务器。我能够进行SSH连接-直到突然停止工作。我已经在线阅读过使用-v调试它。输出如下所示。如果我将ssh放入另一个框,然后从该框SSH到服务器,则可以登录。我不知道如何调试此问题,但想学习。

$ ssh -v me@server
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 53: Applying options for *
debug1: Connecting to server [IP] port 22.
debug1: Connection established.
debug1: identity file /Users/me/.ssh/id_rsa type 1
debug1: identity file /Users/me/.ssh/id_rsa-cert type -1
debug1: identity file /Users/me/.ssh/id_dsa type -1
debug1: identity file /Users/me/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
ssh_exchange_identification: read: Connection reset by peer

到目前为止(根据留言板的建议),我一直在寻找主机拒绝文件-但是我的机器上没有这样的文件。

$ cat /etc/hosts.deny 
cat: /etc/hosts.deny: No such file or directory

我在客户端计算机上具有管理员访问权限,但在服务器上却没有。


我建议您sshd在备用端口上开始侦听,并提供详细的输出,并在尝试连接至该端口时提供输出。$(which sshd) -d -p 23。如果您没有执行此操作的能力,那么您的选择将非常有限。最好的选择是让某个拥有服务器管理员权限的人。
帕特里克

可能是服务器上的管理员出于某种原因限制了您的访问权限?无论如何,我可能会联系该人。
mdpc

12
应该在服务器而不是客户端上检查hosts.deny和hosts.allow文件。另外,应检查服务器上的系统日志。如果您也没有访问权限,则可能需要与服务器管理员联系以进行查看。
ckujau 2014年

您找到解决方案了吗?有什么问题?
MeV

2
是一个由管理员使用自动脚本填充的hosts.deny列表。由于我在某个时候忘记了密码,因此尝试登录失败了几次,这是将我的IP放置在hosts.deny列表中的时候。对于狂热的安全性生产力而言,这是如此之多。
K.-Michael Aye

Answers:


23

突然的更改可能是服务器sshd配置上的配置文件更改的结果,但是您表示没有管理员权限就无法检查或更改该配置文件。如果无法及时联系服务器管理员,您仍然可以尝试以下操作。

您的日志仅指示本地版本字符串,应检查sshd服务器和中间计算机上运行的版本。

如果这些版本不同(尤其是本地计算机和服务器之间的版本,而中间计算机和服务器之间的版本较少),则可能存在某种协商不兼容,这是在发生ssh。解决方案过去是在命令行(ssh -c aes256-ctr等等)或您的中缩短密码,HostKeyAlgorithms和/或MAC条目/etc/ssh/ssh_config

您应该在调试信息中查找(通过中间件连接到服务器)以获取适当的值,作为-c/ Ciphers-o HostKeyAlgorithms/ HostKeyAlgorithms-m/ MACs命令行参数的参数。ssh_config更改。

我已经有一段时间没有这个问题了,但是当我这样做时,IIRC足以手动强制Ciphers和HostKeyAlgorithms设置,之后我可以更新服务器的sshd版本,问题就消失了。


3
在我的情况下,服务器sshd软件包已更新到新版本,并导致与ssh您所说的当前客户端配置不兼容。清除我的旧ssh配置文件就可以了。这应该是公认的答案。
chakrit 2014年

2
@chakrit如何清理旧的ssh配置文件?
乔纳森

@Jonathan我安装了恢复盘来执行此操作。
chakrit

16

您可能已被fail2ban或禁止denyhosts。在这种情况下(并进行检查),如果您不想打扰服务器提供商的帮助,则需要从另一个IP地址登录到服务器:例如,另一个服务器,朋友的家庭连接或wifi热点,或通过TOR使用SSH。

登录后,检查您的IP地址是否确实出现在/etc/hosts.deny(服务器端)。如果是这样,那么fail2bandenyhosts必定确实是罪魁祸首。

请参阅此问题的答案以获取防止denyhosts连续阻止您的地址的过程。要fail2ban查找iptables -L --line-number取消禁止 ip iptables -D <chain> <chain number>,请查看howtoforge的详细信息。

您可能希望将IP地址添加到fail2bandenyhosts白名单中(分别/etc/fail2ban/jail.conf是line ignoreip/var/lib/denyhosts/allowed-hosts,并在需要时创建它(但请注意,您的分发路径可能有所不同)),以防止再次发生此问题。


9

在主机服务器上,~/.ssh/authorized_keys为您的Mac 删除位于以下位置的ssh pub.key:然后,tail -f /var/log/auth.log当您打开另一个终端并尝试再次ssh时ssh -v me@server。如果提示您输入密码,则说明您的ssh密钥有问题。如果仍然看到“ ssh_exchange_identification:读取:连接被对等方重置”响应,则尝试失败后,您应该能够从“ /var/log/auth.log”文件中的日志条目中识别出问题所在。登录。

如果仍然无法连接,请在此将auth文件中记录的条目发布到此处,然后我将修改答案。


在某些情况下,无需删除SSH密钥。直接转到tail -f /var/log/auth.log并检查最近的尝试。
杰克·罗布森,

6

如果网络上有多台具有相同MAC地址的计算机(例如,如果您复制虚拟机而忘记更改MAC),则会发生这种情况。


4

由于ISP中的ISP的名称服务器,我得到了它/etc/resolv.conf。这些名称服务器通常过载,并且如果反向DNS查找失败sshd将断开连接。我通过使用更可靠的名称服务器(例如)解决了该问题8.8.8.8


4

我面临着同样的问题。我会成功打开ssh会话,但一段时间后会重置。当我尝试立即连接增益时,会出现错误“连接被拒绝”。当我调试会话时,在重置连接时收到此消息

debug1: client_input_channel_req: channel 0 rtype keepalive@openssh.com reply 1  
debug1: client_input_channel_req: channel 0 rtype keepalive@openssh.com reply 1  
debug1: client_input_channel_req: channel 0 rtype keepalive@openssh.com reply 1  
debug1: channel 0: free: client-session, nchannels 1                             
debug3: channel 0: status: The following connections are open:                   
  #0 client-session (t4 r0 i0/0 o0/0 fd 4/5 cfd -1)                              

debug3: channel 0: close_fds r 4 w 5 e 6 c -1                                    
Read from remote host 10.x.y.z: Connection reset by peer                    
Connection to 10.x.y.z closed.                                              
debug1: Transferred: stdin 0, stdout 0, stderr 100 bytes in 1029.9 seconds       
debug1: Bytes per second: stdin 0.0, stdout 0.0, stderr 0.1                      
debug1: Exit status -1                                                           

此时,我意识到网络上存在IP地址冲突。我改到另一个地址,问题解决了


2
否决票,答案有什么问题?检查清单时仍然是一个有效的案例,也许不是常见的案例。
Pysis

@Pysis:正确,正确的答案
Daniel

3

您的日志表示服务器端断开了连接。要找出原因,您应该查阅服务器端日志,这些日志应显示断开连接的原因。您应该几乎总是能够在/ var / log / messages中找到日志

我猜想,随着客户端发送版本号后连接断开,服务器会以某种方式威胁客户端不兼容。


3

我遇到了同样的问题,但事实证明原因不同:我使用了错误的端口。

在较新版本中ssh,错误为Connection refusedBad port

在旧版本中,给出的错误是 ssh_exchange_identification: read: Connection reset by peer

因此,当您收到此类错误时,请检查端口是否正确。


1

我知道这个问题很旧,但是我想分享一些发现。检查/var/empty/sshd服务器上是否具有适当的所有权和权限。

我们修改了一个厨师脚本,以更新某些目录权限,但是无意中更新了预期目标下的目录,将/ var的所有权更改为应用程序用户/组,并将权限更改为775。


1

由于未在“答案”中明确提及,因此出现此错误的另一种方式是,如果您和服务器之间的基于网络的防火墙决定阻止连接。防火墙可能已经确定来自OS X系统IP的连接“太多”,并开始阻止它。另一个系统还没有“太多”的连接,因此被允许。

您从服务器收到的最后一条消息是在甚至开始任何身份验证尝试之前发生的一条消息,它排除了围绕您的帐户,密钥或密码的各种可能性。

从供应商中随机抽取的此类蛮力策略示例包括:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.