Warum loggt sich der öffentliche Schlüssel mit ssh ein, aber nicht mit x2go?

0

Ich verbinde mich von einem Mac OS X-System zu einem Linux-Server. Ich habe den öffentlichen RSA-Schlüsselzugriff eingerichtet, so dass ich einfach tippen kann

ssh [hostname]

und es wird eine Verbindung ohne Passwort hergestellt.

Beim Versuch, eine Verbindung mit dem Remote Desktop-Client x2go herzustellen, wird eine Fehlermeldung angezeigt:

kex error : did not find one of algos diffie-hellman-group1-sha1 in list [email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1 for kex algos

Mein Mac OS X-System ist ziemlich alt und läuft mit Snow Leopard 10.6.8. Das Linux-System ist ziemlich aktuell. Die von ssh -v gemeldete Version lautet

OpenSSH_5.2p1, OpenSSL 0.9.8y 5 Feb 2013

Ich habe gehört, dass dieser Kex-Fehler auf eine Nichtübereinstimmung der Verschlüsselungsalgorithmen auf dem Client und dem Server hinweisen kann. Aber warum ist ssh dort erfolgreich, wo x2go versagt? Kann ich x2go dazu bringen, alles was ssh tut, um sich erfolgreich anzumelden? Ein Teil des Problems ist, dass x2go (im Gegensatz zu ssh -v) nicht die Reihenfolge der Ereignisse meldet. Ich bin mir also nicht sicher, was genau versucht wurde. Wenn es eine Möglichkeit gibt, ein ausführliches Protokoll anzuzeigen, wäre dies nützlich.

mfardal
quelle

Antworten:

0

Ja, es ist eine Abweichung beim Schlüsselaustauschalgorithmus. (Es hat nichts mit "Public-Key-Login" von Ihrer Seite zu tun. Es handelt sich hierbei um völlig separate Phasen.)

Das Problem kommt von:

  • X2go Bündelung einer SSH-Clientbibliothek von schlechter Qualität, die die nicht einmal implementiert erforderlich Teile der SSH-Spezifikation v2 (ich habe eine gefunden X2go-Fehlerbericht in dieser Situation) und

  • Folgen Sie blind den Anweisungen eines Blogposts (wahrscheinlich "Secure Secure Shell"?), um den SSH-Server auf eine sehr kleine Teilmenge von Schlüsselaustauschalgorithmen zu beschränken, die von der X2go-Clientbibliothek nicht unterstützt werden.

Normalerweise ist die Verwendung einer Bibliothek wie libssh für SSH-Verbindungen in Ordnung - das Arbeiten mit Bibliotheksfunktionen ist etwas bequemer als das Jonglieren /usr/bin/ssh Befehle im Hintergrund. Allerdings verwendet X2go auf Ihrem System eine sehr alte Version von libssh - es implementiert nur diffie-hellman-group1-sha1, aber nicht diffie-hellman-group14-sha1, obwohl RFC 4253 erfordert beides .

(Der Unterschied besteht darin, dass "group1" (Oakley Group 2) 1024-Bit-DH-Parameter verwendet, d nicht mehr sicher genug . Gruppe 14 verwendet mittlerweile 2048-Bit-Parameter.)


Sie sagten, Ihr Linux-System sei "ziemlich aktuell". Wenn es um kryptografische Software geht, ist das so nicht einmal annähernd - Das neueste OpenSSH ist 7.1 (Ihre Version ist 6 Jahre alt), das neueste OpenSSL ist 1.0.2d (Ihre Version ist 2 Jahre alt) und die neueste Version ist 0.7.2 (Ihre Version ist… alt).

  • Also die beste Lösung wäre zu Installieren Sie die neueste Version von Libssh , die eine breitere Palette von Schlüsselaustauschalgorithmen unterstützt (z. B. die gleichen) [email protected] ). Für die Unterstützung des elliptischen Kurvenalgorithmus ist jedoch wahrscheinlich mindestens OpenSSL 1.0.x erforderlich. Wenn Sie also bei einer älteren Linux-Distribution stecken, könnte dies mühsam sein ...

  • Die andere Methode ist zu Whitelist diffie-hellman-group1-sha1 in der KexAlgorithms-Liste Ihres Servers neben den derzeit aufgelisteten. Dies führt zu vergleichsweise schwachen X2go-Verbindungen - stark genug gegenüber Ihren Nachbarn, aber möglicherweise schwach gegenüber Three Letter Agencies. Obwohl Sie noch eine OpenSSH-Version von 2009 verwenden, ist es Ihnen wahrscheinlich sowieso egal.

grawity
quelle
Zur Verdeutlichung ist das oben erwähnte uralte openssh auf dem Mac (Client-Computer). Die Linux-Version ist Debian 8.1 und die sshd-Berichte Version OpenSSH_6.7p1 Debian-5, OpenSSL 1.0.1k 8. Januar 2015. Also nicht die neueste Version, aber nicht so alt, wie Sie gedacht haben.
mfardal
Wenn Sie sagen, dass Sie die neueste Version von libssh installieren möchten, meinen Sie dies auf dem Server oder Client-Computer? Wenn auf dem Server, wird dies die Kompatibilität verbessern? Wenn x2go auf dem Client weiß, dass es verwendet werden soll? Ich dachte, das Problem sei aufgetaucht, weil es seine eigene gebündelte Bibliothek verwendete und nicht das, was / usr / bin / ssh verwendet.
mfardal
Aber libssh ist diese Bibliothek. Es hat nichts mit / usr / bin / ssh zu tun. Beide haben "ssh" im Namen, da sie beide SSH-Clients sind.
grawity
1
Lassen Sie mich prüfen, ob ich Ihre Antwort auf meine ursprüngliche Frage verstehe, bevor ich mich entscheide, was ich dagegen tun soll. (1) / usr / bin / ssh verwendet seine eigene ssh-Implementierung, nicht libssh; (2) meine x2go-Version verwendet eine alte, gebündelte Version von libssh; und (3) diese beiden Implementierungen des SSH-Protokolls unterscheiden sich in den Funktionen, die sie implementieren. Ist das korrekt?
mfardal
@mfardal: Richtig. Sie müssen also den Client aktualisieren. (Obwohl ich nicht "gebündelt" hätte sagen sollen - die Chancen stehen gut, es wird einfach die von Libro bereitgestellte libssh verwendet, aber selbst das ist alt.) Übrigens fand ich eine Fehlerbericht auf der X2go-Website zu genau dieser Situation.
grawity