SSH问题:从套接字读取失败:对等连接重置


14

我在其中一台服务器上编译了OpenSSH_6.6p1。我可以通过SSH登录到升级后的服务器。但是我无法由此连接到其他运行OpenSSH_6.6p1或OpenSSH_5.8的服务器。连接时出现以下错误。

Read from socket failed: Connection reset by peer

在日志中的目标服务器上,我看到了以下内容。

sshd: fatal: Read from socket failed: Connection reset by peer [preauth]

我试图指定cipher_spec [SSH -c AES128-CTR目的地服务器]中提到这里,并能连接。默认情况下如何配置ssh以使用密码?为什么在这里需要密码?


从发生此错误的服务器上,什么时候发生telnet ip.or.name.of.offending.server 22
MadHatter 2014年

1
双方似乎都认为对方关闭了连接。此时,我将断开tcpdump或wireshark并在两端运行它。
迈克尔·汉普顿

@MadHatter我能够在端口22上进行telnet并获得SSH响应。
尼汀

尝试编译诸如6.5p1之类的openssh的早期版本,以查看此行为是否是由于代码库的更改引起的?

Answers:


7

该问题听起来像是服务器端错误。当客户端发送密码列表时,openssh服务器可能希望能够在单个系统调用中读取该列表。

如果支持的密码列表长于一个数据包中可以发送的密码,则服务器在第一次调用中获得的字节数可能少于预期的字节数。服务器上的正确行为是执行另一个调用以获取其余字节。但是从出现的问题描述中,服务器没有立即获得完整的密码列表,而是关闭了连接。当来自客户端的下一个数据包到达时,服务器将向客户端发送连接重置。

将客户端配置为使用较短的密码列表将可以解决该错误。openssh客户端将在以下位置查找密码列表:

  1. 在命令行上使用-c cipher_spec或-o Ciphers = cipher_spec
  2. 在〜/ .ssh / config中,通过在相关主机部分或第一个主机之前指定Ciphers cipher_spec。
  3. 在/ etc / ssh / ssh_config中,使用与〜/ .ssh / config相同的格式
  4. 客户端在编译时内置的默认列表。

这两个配置文件分别是每个用户和系统范围的设置。Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc建议使用像Eric这样的工具,应该可以正常工作。


这是openssh版本中的已知缺陷吗?有没有人链接到此问题的openssh错误跟踪器?
user313114

1
@ user313114我没有寻找任何这样的跟踪器,因为我相信该错误已在三年前编写此答案时的最新版本中修复。
卡巴斯德(Kasperd)

4

您可以在ssh配置文件(/ etc / ssh / ssh_config或类似文件,取决于$ PREFIX等)中指定密码。您可以在ssh(客户端)配置文件中设置通过命令行传递给ssh客户端的任何选项。

这是相关的行(只是注释):

#   Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc

3

修复它的方法,希望对您有所帮助:

# Recreate host keys
sudo rm /etc/ssh/ssh_host_*
sudo ssh-keygen -A

# Re-install SSh
sudo apt-get --reinstall install openssh-server openssh-client

通过添加值来编辑sshd_config

add :  MaxAuthTries 3

通过取消注释值来编辑ssh_config

Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc

0

通过将以下文件权限修改为600解决了此问题。

/ etc / ssh / ssh_host_dsa_key
/ etc / ssh / ssh_host_rsa_key
/ etc / ssh / ssh_host_ecdsa_key

还将“ / etc / ssh /”内所有其他文件的权限修改为644。所有文件文件必须由“ root”拥有。

以下是为“ / etc / ssh”目录下的所有文件分配适当权限的完整命令集:

chown root:root / etc / ssh / * chmod 644 / etc / ssh / *
chmod 600 / etc / ssh / ssh_host_dsa_key
chmod 600 / etc / ssh / ssh_host_rsa_key
chmod 600 / etc / ssh / ssh / ssh_host_ecdsa_key


-1

我遇到的症状完全相同的问题是由于主机密钥被截断。尝试使用以下方法重新创建它们:

sudo rm /etc/ssh/ssh_host_*
sudo ssh-keygen -A
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.