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

nit*_*ins 15 linux ssl ssh

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

Read from socket failed: Connection reset by peer
Run Code Online (Sandbox Code Playgroud)

在日志中的目标服务器上,我看到它如下。

sshd: fatal: Read from socket failed: Connection reset by peer [preauth]
Run Code Online (Sandbox Code Playgroud)

我尝试指定cipher_spec [ ssh -c aes128-ctr destination-server ] 如自 5.8p1存档版本以来的 ssh 'connection reset by peer' 问题中所述,并且能够连接。如何将 ssh 配置为默认使用密码?为什么这里需要密码?

kas*_*erd 9

这个问题听起来像是服务器端的错误。当客户端发送密码列表时,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 建议的那样使用应该可以正常工作。