Linux

無法 SSH:調試 1:期待 SSH2_MSG_KEX_DH_GEX_REPLY

  • March 23, 2022

我們在標準 (22) 埠上執行 SSH 的 Amazon EC2 上的伺服器。

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

有趣的是,昨天它工作得很好!但是今天,我不知道發生了什麼!我就是無法登錄。

ssh -vvvv servername

卡在

debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY

我有人確認我的公鑰在那裡。

我從另一台電腦(windows 7 + putty)添加了一個新的公鑰,我能夠登錄。這台裝有 Win7 的電腦在同一個 LAN 上,這意味著外部 IP 是相同的。

我的私鑰適用於其他伺服器,但不適用於此。

更改網路介面MTU即可解決。這是 ubuntu 14.04 的錯誤。

這對我有用:

sudo ip li set mtu 1200 dev wlan0

或者

sudo ifconfig wlan0 mtu 1200

ssh 無法連接到 VPN 主機 - 在 ’expecting SSH2_MSG_KEX_ECDH_REPLY’ 處掛起

訪問 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 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。
  • 該問題也出現在等待頁面重新載入直到說“伺服器已重置連接”的 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

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

引用自:https://serverfault.com/questions/210408