Kann nicht SSH: debug1: erwartet SSH2_MSG_KEX_DH_GEX_REPLY

24

Wir haben einen Server XXX auf Amazon EC2.

SSH wird auf einem Standardport (22) ausgeführt.

Ich habe meinen Pubkey in der Datei /.ssh/authorized_keys abgelegt

Das lustige daran ist, dass es gestern super geklappt hat!

Aber heute weiß ich nicht, was passiert ist! Ich kann mich einfach nicht einloggen.

ssh -vvvv Servername

ist fest auf

debug1: erwartet SSH2_MSG_KEX_DH_GEX_REPLY

Ich habe meinen Pubkey überprüft und er ist da! (Wie ich nachgesehen habe? Ich habe den anderen Typen gebeten, nachzusehen.)

und dann habe ich einen anderen computer (windows 7 + putty) benutzt und meinen neuen pubkey platziert. Und was? Ich konnte mich einloggen! Und das ist ein weiterer Computer mit Win7 im selben LAN, was bedeutet, dass die externe IP die gleiche ist.

Mein privater Schlüssel funktioniert für andere Server aber nicht mit diesem.

Bitte helfen Sie!

bakytn
quelle
Ich habe NEUE Schlüssel generiert und neuen Pubkey gespeichert ... das Gleiche! Ha!
Bakytn
Ihr Problem hat übrigens nichts mit der Pubkey-Authentifizierung zu tun: Der DH-Schlüsselaustausch ( SSH2_MSG_KEX_DH_GEX_REPLY) erfolgt viel früher in der Verbindung.
Grawity
danke für Informationen. Übrigens, das Problem wurde von selbst behoben. Ich habe nicht nur versucht, mich einzuloggen und ich war erfolgreich. hah
bakytn
Schlechte Netzwerklatenz? viel Tropfen? Es ist eine ganz normale Nachricht.
Korjavin Ivan
wahrscheinlich ist es das. Ich kann es jetzt in keiner Weise reproduzieren. So könnte es von meiner Seite sein.
Bakytn

Antworten:

28

Ändern Sie die Netzwerkschnittstelle MTU, um es zu lösen. Dies ist ein Fehler für Ubuntu 14.04.

Das hat bei mir funktioniert:

sudo ip li set mtu 1200 dev wlan0

ODER

sudo ifconfig wlan0 mtu 1200

ssh kann keine Verbindung zum VPN-Host herstellen - hängt bei 'SSH2_MSG_KEX_ECDH_REPLY erwartet'

shgnInc
quelle
sudo ip li set mtu 1400 dev eno1arbeitete für mich auf Ubuntu 16.04.
Márcio
Ich danke dir sehr. Ich war seit Wochen nicht in der Lage, SSH oder Remotedesktop in eine bestimmte Box zu verschieben. HTTP funktioniert und benachbarte Computer funktionieren einwandfrei. Ich musste von anderen Maschinen
springen
12

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 [email protected] 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

neofutur
quelle
Dies kann insbesondere dann passieren, wenn Sie eine sehr ungewöhnliche kleine MTU auf Client-Seite haben, z. B. wenn Sie openvpn in einem Double-Nat-Netzwerk verwenden möchten.
Dennis Nolte
Bevor ich dieses Problem hatte, habe ich die Standard-MTU-Werte verwendet. Die Verringerung der MTU war die Lösung, nicht das Problem. Bitte erläutern Sie Ihren Kommentar.
Neofutur
9

In meinem Fall habe ich keine Berechtigung, die MTU-Größe zu verringern. Die manuelle Angabe der Chiffre funktioniert nicht.

Ich kann nach Verkürzung der MAC-Liste eine Verbindung herstellen, indem ich eine eingebe, zB:

ssh -o MACs=hmac-sha2-256 <HOST>
Lacek
quelle
Ich wusste, dass es nicht die MTU sein wird. Wenn jemand mit der MTU auf der Serverseite in Konflikt gerät, kann dies den Netzwerkdurchsatz beeinträchtigen. Das Problem muss ein Versionsunterschied von OpenSSH sein und wie sie bestimmte Kombinationen von Chiffren und MAC-Funktionen bevorzugen.
Csaba Toth
7

Ich hatte das gleiche Problem, nachdem ich meinen Ubuntu-Client-Rechner aktualisiert hatte. Ich habe mein Problem gelöst, indem ich die Größe der Zeile "Ciphers" in / etc / ssh / ssh_config verringert habe. Dies funktioniert auch, wenn Sie die Verschlüsselung in der Befehlszeile angeben (z. B .: ssh -c Benutzername @ Hostname).

Tipp von hier:

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

rui
quelle
2

Ich hatte dieses Problem heute unter Windows (ssh wird mit Git ausgeliefert) und Ubuntu.

Es scheint ein Fehler in OpenSSH zu sein, es gibt ein Problem in LauchPad .

Es funktionierte für mich unter Windows und erzwang die 3des-cbc-Verschlüsselung und den Schlüssel unter Ubuntu.

LawfulHacker
quelle
2

Das Ändern des KexAlgorithmus hat bei mir funktioniert und ist möglicherweise eine Option, bei der Sie nicht über die Systemrechte zum Ändern der MTU-Einstellungen verfügen. Dies könnte auch eine sein, die die OpenSSH-Crew anspricht. z.B

ssh -o KexAlgorithms=ecdh-sha2-nistp521 [email protected]
SimonSC
quelle
-1

Wir haben es gelöst, indem wir die Ciphers-Zeile in / etc / ssh / ssh_config auskommentiert haben

user362323
quelle
-2

Es scheint klar zu sein, dass der Optionsdialog ein Problem verursacht, da ich die Reihenfolge geändert habe, in der Putty den Schlüsselaustausch aushandelt und das Problem gelöst hat.

rfg
quelle
1
Was scheint klar zu sein? Diese Frage wurde (mit einer akzeptierten Antwort) vor über 4 Jahren beantwortet.
David Makogon
-3

cmiiw

  • Überprüfen Sie Ihre ~ / .ssh / authorized_keys-Berechtigung, es sollte 600 sein

  • Überprüfen Sie die Einstellungen unter / var / log / secure, / var / log / messages oder / var / log / auth

chocripple
quelle
Die authorized_keysBerechtigung hat nichts mit dem Fehler zu tun, da der Client aufgrund der früheren Protokollaushandlung nicht mehr reagiert. Das Überprüfen der serverseitigen Protokolle kann hilfreich sein, aber diese Zeile ist eher eine Ablehnung von Kommentaren.
try-catch-finally