无法 SSH:debug1:需要 SSH2_MSG_KEX_DH_GEX_REPLY

无法 SSH:debug1:需要 SSH2_MSG_KEX_DH_GEX_REPLY

我们在 Amazon EC2 上有一个服务器,运行 SSH 在标准(22)端口上。

我将我的公钥放在<username>/.ssh/authorized_keys文件中。

有趣的是,昨天它运行得很好!但今天,我不知道发生了什么!我就是无法登录。

ssh -vvvv servername

卡在

debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY

我找人确认了我的公钥在那里。

我从另一台计算机(Windows 7 + Putty)添加了一个新的公钥,并且能够登录。这台装有 Win7 的另一台计算机在同一个 LAN 上,这意味着外部 IP 是相同的。

我的私钥适用于其他服务器,但不适用于此服务器。

答案1

更改网络接口 MTU 即可解决。这是 ubuntu 14.04 的一个 bug。

这对我有用:

sudo ip li set mtu 1200 dev wlan0

或者

sudo ifconfig wlan0 mtu 1200

ssh 无法连接到 VPN 主机 - 挂在“期望 SSH2_MSG_KEX_ECDH_REPLY”处

答案2

就我而言,我没有权限降低 MTU 大小。而且手动指定密码也不起作用。

我可以在通过指定一个MAC列表来缩短MAC列表后进行连接,例如:

ssh -o MACs=hmac-sha2-256 <HOST>

答案3

访问 online.net 数据中心的专用服务器时也遇到同样的问题。

重启后没有问题,不需要更改 MTU,ssh 连接可以工作 1-3 周,然后出现完全相同的错误,阻塞 KEXINIT,无法再连接 ssh 服务器。

它可能是某种 sshd 错误,但它必然是由 1-3 周后发生的一些网络问题触发的,我在这个网络上的许多不同服务器上多次重现了这个确切的问题,有人说它可能与思科错误有关,可能与某些 DPI 选项有关。

在我管理的其他数据中心的服务器上从未发生过这个问题,而且这些服务器有完全相同的发行版、配置和 sshd 版本。

如果您不想每 10 天重启一次,因为数据中心防火墙(或其他网络调整)正在做奇怪的事情:

首先连接其中一个客户端解决方法:

解决方法 1,降低本地客户端 MTU:

ip li set mtu 1400 dev wlan0

( 1400 应该足够了,但如果需要,您可以尝试使用较低的值)

解决方法 2,指定 ssh 连接所选的密码:

ssh -c [email protected] host

(或者尝试任何其他可用的密码)

这两种客户端解决方法都对我有用,我可以连接并保存正常运行时间;但是您想永远修复服务器端的问题,因此您不必要求每个客户端在本地调整他们的 MTU。

在 gentoo 上我刚刚添加了:

mtu_eth0="1400"

在 /etc/conf.d/net 中

(相同的 mtu 选项应该在你首选的发行版网络配置文件的某个地方可用)

我已将 mtu 设置为 1400,但在大多数情况下 1460 可能就足够了。

另一个有帮助的解决方法是使用以下 iptables 规则来管理碎片:

#/sbin/iptables -I OUTPUT -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

#/sbin/ip6tables -I OUTPUT -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

(但我个人直到现在还不需要这个)

还请注意,此问题的症状还可能是:

debug1: SSH2_MSG_KEXINIT sent

不只是

debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY

2016 年 3 月编辑:

  • 将服务器上的 mtu 降低到 1400 几乎总是有效,但我最近遇到过这样的情况:服务器上的 mtu 已经降低到 1400,问题再次出现,客户端也必须将 mtu 降低到 1400。

  • 该问题还出现在网络登录表单上,等待页面重新加载直到提示“服务器已重置连接”,在客户端将 mtU 设置为 1400 后也得到修复。

    相关链接 :

https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/1254085

http://www.held.org.il/blog/2011/05/the-myterious-case-of-broken-ssh-client-connection-reset-by-peer/

https://nowhere.dk/articles/natty-narwhal-problems-connecting-to-servers-behind-cisco-firewalls-using-ssh

https://stackoverflow.com/questions/2419412/ssh-connection-stop-at-debug1-ssh2-msg-kexinit-sent

http://www.1-script.com/forums/ssh/ssh-hang-after-ssh2-msg-kexinit-sent-10616-.htm

http://www.snailbook.com/faq/mtu-mismatch.auto.html

答案4

升级 Ubuntu 客户端计算机后,我遇到了同样的问题。我通过减少 /etc/ssh/ssh_config 中“Ciphers”行的大小解决了我的问题。如果您在命令行中指定密码,它也有效(例如:ssh -c username@hostname)

提示来自这里:

https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/708493/comments/39

相关内容