无法SSH:debug1:需要SSH2_MSG_KEX_DH_GEX_REPLY


24

我们在Amazon EC2上有一个服务器XXX。

SSH在标准(22)端口上运行。

我将发布密钥放在/.ssh/authorized_keys文件中

有趣的是,昨天运作良好!

但是今天,我不知道发生了什么!我只是无法登录。

ssh -vvvv服务器名称

卡在

debug1:需要SSH2_MSG_KEX_DH_GEX_REPLY

我检查了我的公钥,它在那里!(我如何检查?我请另一个人检查)

然后我使用另一台计算机(Windows 7 +腻子)并放置了新的公钥。还有什么?我能够登录!那是另一台装有Win7的计算机,它位于同一LAN上,这与外部IP相同。

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

请帮忙!


我生成了新密钥并存储了新的pubkey。哈!
bakytn

费耶,您的问题与pubkey身份验证无关:DH密钥交换(SSH2_MSG_KEX_DH_GEX_REPLY)在连接中更早发生。
grawity 2010年

谢谢你的信息。顺便说一句,伙计们,问题已自行解决。我什么都没有尝试登录,但是成功了。哈
bakytn 2010年

不良的网络延迟?多少滴?它只是正常的消息。
Korjavin Ivan 2011年

可能是。我现在无法以任何方式复制它。所以可能从我这边来看。
bakytn11年

Answers:


28

更改网络接口MTU以解决它。这是Ubuntu 14.04的错误。

这为我工作:

sudo ip li set mtu 1200 dev wlan0

要么

sudo ifconfig wlan0 mtu 1200

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


sudo ip li set mtu 1400 dev eno1在Ubuntu 16.04上为我工作。
马尔西奥

非常感谢。数周以来,我一直无法将SSH或远程桌面放入一个特定的盒子。HTTP可以正常工作,相邻的机器也可以正常工作。我已经从其他机器要跳进去。
duckbrain

12

同样的问题也存在于这里,以访问online.net数据中心的专用服务器。

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

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

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

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

首先连接这些客户端解决方法之一:

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

ip li set mtu 1400 dev wlan0

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

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

ssh -c aes256-gcm@openssh.com host

(或尝试使用其他可用的密码)

这些客户端解决方案都对我有用,我可以连接并节省正常运行时间;但是您想永远修复此服务器端,因此您不必要求每个客户端在本地调整其MTU。

在gentoo上,我刚刚添加了:

mtu_eth0="1400"

在/etc/conf.d/net中

(相同的mtu选项应该在您的首选发行版网络配置文件中的某处可用)

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

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

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

#/ sbin / ip6tables -I输出-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。

  • 该问题还出现在Web登录表单上,等待页面重新加载,直到说出“服务器已重置连接”为止,该问题在客户端将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

/programming/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


尤其是当您要在双nat网络上使用openvpn的客户端上有一个非常不寻常的小型MTU时,可能会发生这种情况。
丹尼斯·诺尔特

在出现此问题之前,我使用默认的mtu值,降低mtu是解决方案,而不是问题。请解释您的评论。
neofutur

9

就我而言,我无权降低MTU大小。并且手动指定密码不起作用。

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

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

我知道这不会成为MTU。如果有人在服务器端破坏了MTU,则可能会影响网络吞吐量。问题必须是OpenSSH的某些版本差异,以及它们如何偏爱某些密码和MAC功能组合。
Csaba Toth


2

我今天开始在Windows(随Git分发的ssh)和Ubuntu上遇到此问题。

它似乎是OpenSSH上的错误,而LauchPad上存在问题。

它在Windows上对我有效,它强制使用3des-cbc密码和Ubuntu上的密钥。


2

更改KexAlgorithm对我有用,并且可能是您没有系统权限来更改MTU设置的选项。这也可能是OpenSSH工作人员要解决的问题。例如

ssh -o KexAlgorithms=ecdh-sha2-nistp521 fu@bar.com

-1

我们解决了它,注释掉/ etc / ssh / ssh_config上的Ciphers行


-2

看来选项对话框会引起问题,因为我更改了Putty协商密钥交换和解决问题的顺序。


1
什么似乎很清楚?这个问题在4年前得到了回答(并接受了一个答案)。
David Makogon '16

-3

ii

  • 检查您的〜/ .ssh / authorized_keys权限,应为600

  • 在/ var / log / secure,/ var / log / messages或/ var / log / auth上检查


authorized_keys由于客户端在早期协议协商期间被卡住,因此该权限与错误无关。检查服务器端日志可能会有所帮助,但是此行只是一条注释-downvote。
试试,最终
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.