Ich verwende seit über 10 Jahren PKI-basierte SSH-Verbindungen. Plötzlich, nach einem Server-Update, funktionierten einige Verbindungen nicht mehr. Ich verwende dieselben PKI-Schlüssel, die ich seit Jahren verwende (jeder Server hat seine eigenen Schlüssel, ich habe einen kleinen Satz persönlicher Schlüssel).
Arbeiten - sieht so aus:
C:\Users\michael>ssh2 -p 2222 [email protected] date
Authentication successful.
Fri Nov 25 10:30:42 2016
Nicht funktioniert sieht aus wie:
C:\Users\michael>ssh2 [email protected] date
warning: Authentication failed.
Disconnected; key exchange or algorithm negotiation failed (Algorithm negotiation failed.).
Was hat sich geändert?
Antworten:
Nach einem Update können Nebenwirkungen auftreten. Bei OpenSSH ändern sich die Standardeinstellungen häufig. OpenBSD (die OpenSSH warten / entwickeln) hat die Richtlinie von OpenBSD, sich keine Gedanken über die Abwärtskompatibilität zu machen. Dies kann Dinge "zerbrechen", die, wie gelesen, gut funktionieren.
Es gibt einen massiven Hinweis - dass ich nicht bemerkt habe, als mir das zum ersten Mal passiert ist (über die GUI-Oberfläche, und ich habe es einfach weggeklickt und war 'wütend' auf 'dummes Update - neue Version ist kaputt'. Es stellt sich heraus, dass die neue Version war nicht kaputt - aber OpenBSD / OpenSSH beginnt mit dem Ändern der Standardeinstellungen für den Schlüsselaustausch ab OpenSSH-6.7p1. Siehe: http://www.openssh.com/txt/release-6.7 , insbesondere:
Mein Problem ist, dass ich einen alten Client habe, der keine der neuen Standardeinstellungen hat, sodass keine Verbindung hergestellt werden kann.
Zwei Lösungspfade: Fix / Patch des Servers oder - Fix / Patch des Clients.
Serverlösung: Bringen Sie "alte" Einstellungen zurück, damit "alte" Clients weiterhin eine Verbindung herstellen können, dh - freundlich zu vorhandenen Clients - bearbeiten Sie die Datei sshd_config und fügen Sie (genug) der alten Chiffren zurück.
Die wichtigsten Zeilen zum Ändern / Hinzufügen in sshd_config sind:
Einfach hinzufügen:
Lösung 2 - Reparieren / Ersetzen des Clients
Eine einfache Möglichkeit, um festzustellen, welche Chiffren Ihr aktueller Client unterstützt (unter der Annahme einer CLI), besteht darin,
ssh -h
festzustellen, ob dies Folgendes bietet:Ein weiterer nützlicher Befehl ist:
ssh -V
Meiner - war - ein sehr alter Client - für meinen Desktop. Wenn Sie oben schauen, können Sie sehen, dass es keinen der - 15 Jahre später - bevorzugten Algorithmen unterstützt, nicht einmal einen -cbr (rotierend), nur -cbc (Blockkopie).
Wenn Ihr Client keine Option zur Bereitstellung der unterstützten Schlüssel usw. hat (OpenSSH sollte die Option haben
-Q
), stellen Sie einfach eine Verbindung zu sich selbst her, z. B.ssh -v localhost
und es gibt Zeilen wie diese, die Ihnen mitteilen, dass bekannt ist:Und was gefunden (und verwendet) wurde:
Extra: Debug-Informationen von einer fehlgeschlagenen Verbindung - weitere Details
Oder was versucht, aber verpasst wurde.
Bearbeiten: hinzugefügt am 02. Januar 2017
Neuer Abschnitt - Was ist mit Schlüsseln, die nicht mehr funktionieren?
Auf meinem Server sind ein "alter" Client und der "neueste" Client installiert - und es wird ein anderes Verhalten beim Herstellen einer Verbindung zu einem Server angezeigt. Hier geht es nicht um Verschlüsselungsfehler, sondern um die Verwendung eines archaischen PKI-Paares - basierend auf DSA.
Kurz gesagt, openssh-7 (.3) sendet keine öffentlichen DSA-Schlüssel mehr (standardmäßig, möglicherweise überhaupt nicht).
Unten vergleiche ich die Ausgabe von zwei Versionen von openssh
/ usr / bin / ssh (alte Version, linke Seite) und
/ opt / bin / ssh (neue Version, rechte Seite) - der Befehl lautet:
Ich hoffe, Sie bemerken beim Durchsuchen der folgenden Ausgabe, dass die Schritte und Meldungen im Allgemeinen gleich sind. Der Hauptunterschied kommt nach der Zeichenfolge SSH2_MSG_SERVICE_ACCEPT
Ich möchte, dass Sie feststellen, dass die alte Version das DSA-basierte Schlüsselpaar bietet (und vom "alten" Server akzeptiert wird -, während der neue Server niemals den DSA-basierten Schlüssel anbietet.
Hinweis: Die "Lösung" hierfür besteht darin, (mindestens eines der) PKA-Paare auf der Basis von rsa, ecdsa oder ed25519 hinzuzufügen.
quelle
ssh2
wenn sie mich akzeptiert hätten - vor allem für die Leichtigkeit des Tunsscp
Transfer vom selben Fenster wiessh