Genau das gleiche Problem besteht hier beim Zugriff auf einen dedizierten Server im Rechenzentrum online.net.
Theres kein Problem nach einem Neustart, keine Notwendigkeit, MTU zu ändern, SSH-Verbindung funktioniert für 1-3 Wochen, dann erscheint genau dieser Fehler, Blockierung auf KEXINIT, nicht mehr möglich, den SSH-Server zu verbinden.
Es könnte eine Art sshd-Fehler sein, aber der Fehler wird notwendigerweise durch ein paar Nework-Fehler ausgelöst, die nach 1-3 Wochen auftreten. Ich habe dieses Problem viele Male mit vielen verschiedenen Servern in diesem Netzwerk reproduziert. Einige sagen, es könnte mit einem Cisco-Fehler zusammenhängen. Möglicherweise im Zusammenhang mit einigen DPI-Optionen.
Dieses Problem ist bei anderen Servern, die ich in anderen Rechenzentren verwalte und die genau die gleiche Distribution, Konfiguration und SSHD-Version haben, nie aufgetreten.
Wenn Sie nicht alle 10 Tage einen Neustart durchführen möchten, weil die Firewalls des Rechenzentrums (oder andere Netzwerkverbesserungen) seltsame Dinge tun:
Stellen Sie zunächst eine Verbindung mit einer dieser clientseitigen Problemumgehungen her:
Problemumgehung 1: Verringern der lokalen, clientseitigen MTU:
ip li set mtu 1400 dev wlan0
(1400 sollte ausreichen, aber Sie können bei Bedarf versuchen, niedrigere Werte zu verwenden.)
Problemumgehung 2, wobei der ausgewählte Chiffrier für die SSH-Verbindung angegeben wird:
ssh -c aes256-gcm@openssh.com host
(oder versuchen Sie es mit einem anderen verfügbaren Chiffriergerät)
Diese beiden clientseitigen Problemumgehungen haben es mir ermöglicht, eine Verbindung herzustellen und meine Betriebszeit zu verlängern. Aber Sie möchten diese serverseitige Störung für immer beheben, damit Sie nicht jeden Client auffordern müssen, seine MTU lokal zu optimieren.
Auf gentoo habe ich gerade hinzugefügt:
mtu_eth0="1400"
in /etc/conf.d/net
(Die gleiche mtu-Option sollte irgendwo in Ihrer bevorzugten Distributionsnetzwerk-Konfigurationsdatei verfügbar sein.)
Ich habe die MTU auf 1400 eingestellt, aber 1460 ist wahrscheinlich in den meisten Fällen genug.
Eine weitere Abhilfe könnte darin bestehen, die folgenden iptables-Regeln zum Verwalten der Fragmentierung zu verwenden:
# / sbin / iptables -I AUSGABE -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
(aber ich persönlich brauchte diesen bis jetzt nicht)
Beachten Sie auch, dass die Symptome dieses Problems auch sein können:
debug1: SSH2_MSG_KEXINIT sent
nicht nur
debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY
edit märz 2016:
Das Verringern der MTU auf 1400 auf dem Server funktioniert am häufigsten, aber ich hatte kürzlich den Fall, dass die MTU auf dem Server bereits auf 1400 gesenkt wurde und das Problem erneut auftrat und der Client die MTU ebenfalls auf 1400 senken musste.
Das Problem trat auch bei Web-Anmeldeformularen auf, die darauf warteten, dass die Seite erneut geladen wurde, bis die Meldung "Der Server hat die Verbindung zurückgesetzt" angezeigt wurde. Dies wurde ebenfalls behoben, nachdem der Client die mtU auf 1400 gesetzt hatte.
ähnliche Links :
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