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

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

我在我们的一台服务器上编译了 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]

我尝试指定密码规范[ ssh -c aes128-ctr 目标服务器 ] 如上所述自 5.8p1 以来,ssh‘对端重置连接’问题存档版本) 并能够连接。如何配置 ssh 以默认使用密码?为什么这里需要密码?

答案1

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

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

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

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

这两个配置文件分别是针对每个用户和系统范围的设置。Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc按照 Eric 的建议使用应该没问题。

答案2

您可以在 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

答案4

我的问题与您看到的症状完全相同,这是由于主机密钥被截断造成的。尝试使用以下命令重新创建它们:

sudo rm /etc/ssh/ssh_host_*
sudo ssh-keygen -A

相关内容