无法 SSH:debug1:期待 SSH2_MSG_KEX_DH_GEX_REPLY

bak*_*ytn 40 security linux ssh amazon-ec2

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

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

我将我的公钥放在 /.ssh/authorized_keys 文件中

有趣的是,昨天它工作得很好!

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

ssh -vvvv 服务器名

被卡住

debug1:期待 SSH2_MSG_KEX_DH_GEX_REPLY

我检查了我的公钥,它就在那里!(我怎么查的??我让另一个人查的)

然后我使用了另一台计算机(Windows 7 + Putty)并放置了我的新公钥。还有什么?我能够登录!那是另一台装有 Win7 的计算机在同一局域网上,这意味着外部 IP 是相同的。

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

请帮忙!

shg*_*Inc 60

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

这对我有用:

sudo ip li set mtu 1200 dev wlan0
Run Code Online (Sandbox Code Playgroud)

或者

sudo ifconfig wlan0 mtu 1200
Run Code Online (Sandbox Code Playgroud)

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


neo*_*tur 26

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

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

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

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

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

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

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

ip li set mtu 1400 dev wlan0
Run Code Online (Sandbox Code Playgroud)

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

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

ssh -c aes256-gcm@openssh.com host
Run Code Online (Sandbox Code Playgroud)

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

这两种客户端解决方法都适合我,我可以连接并节省正常运行时间;但是你想永远修复这个服务器端,所以你不必要求每个客户端在本地调整他们的 MTU。

在 gentoo 上,我刚刚添加了:

mtu_eth0="1400"
Run Code Online (Sandbox Code Playgroud)

在 /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
Run Code Online (Sandbox Code Playgroud)

不只是

debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
Run Code Online (Sandbox Code Playgroud)

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

/sf/ask/169358871/

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


Lac*_*cek 17

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

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

ssh -o MACs=hmac-sha2-256 <HOST>
Run Code Online (Sandbox Code Playgroud)


小智 10

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

ssh -o KexAlgorithms=ecdh-sha2-nistp521 fu@bar.com
Run Code Online (Sandbox Code Playgroud)


小智 9

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

从这里提示:

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