Wie kann ich SSH zwingen, einen RSA-Schlüssel anstelle von ECDSA zu vergeben?

16

Wie kann ich SSH beim ersten Zugriff auf einen Server zwingen, mir den RSA-Schlüssel zu geben und ihn automatisch zu speichern, wenn der Benutzer dies genehmigt?

Derzeit bietet es mir den ECDSA-Schlüssel an. Da ich den RSA-Schlüssel bereits kenne, würde ich es vorziehen, wenn der RSA-Schlüssel an dieser Stelle angezeigt wird.

Ich habe versucht:

ssh -o RSAAuthentication=yes user@server

Leider gibt mir das einen ECDSA-Schlüssel und die Are you sure you want to continue connecting (yes/no)?Nachricht.

H2ONaCl
quelle
Ich habe eine ähnliche Situation. Server A. Client B. Bei B: ssh A werden Sie zuerst nach dem Schlüssel gefragt. Auf Cleint C: ssh A fragt Sie zuerst nach passwrd, nachdem der Versuch, für Client C den ECDSA-Schlüssel zu verwenden, fehlgeschlagen ist. Dies habe ich im Protokoll von A gesehen. Wenn ich den rsa-Schlüssel auf C vorlade, stellt ssh A eine glückliche Verbindung her . Wie verhindere ich, dass C den ECDSA-Schlüssel beim ersten Versuch verwendet?
Kemin Zhou

Antworten:

14

Durch Entfernen der ECDSA-Algorithmen aus der HostKeyAlgorithmsKonfigurationsvariablen.

ssh -o [email protected],[email protected],[email protected],[email protected],ssh-rsa,ssh-dss user@server

Ich habe einfach alle ECDSA-Algorithmen aus der Standardliste entfernt .

Das können Sie natürlich .ssh/configfür diese Maschine eingeben:

Host: server
    HostKeyAlgorithms [email protected],[email protected],[email protected],[email protected],ssh-rsa,ssh-dss
Tumbleweed
quelle
Für OpenSSL gibt es 1) keinen Doppelpunkt nach dem Host und 2) die Standardliste scheint sich geändert zu haben, seit Sie dies gepostet haben. Versuchen Sie es HostKeyAlgorithms [email protected],ssh-rsastattdessen.
Cowlinator
6

Verwenden Sie RSA nicht, da ECDSA der neue Standard ist.

Tun Sie dies auf dem Server: ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub und notieren Sie sich diese Nummer.

Auf dem Client können Sie eine SSH-Verbindung zum Host herstellen, und wenn Sie dieselbe Nummer sehen, können Sie die Eingabeaufforderung mit Are you sure you want to continue connecting (yes/no)?Ja beantworten . Der ECDSA-Schlüssel wird dann für die zukünftige Verwendung auf dem Client aufgezeichnet.

H2ONaCl
quelle
3
Ja, aber wie wäre es, wenn ich eine alte Anwendung habe, die RSA benötigt, um die Kompatibilität aufrechtzuerhalten, bis eine geschäftliche Entscheidung über ein Update auf ecdsa getroffen wird?
enthusiasticgeek
@RobertSiemer Nur das Original-Fragenposter kann die akzeptierte Antwort ändern. Das kann ich nicht.
enthusiasticgeek
1
H2ONaCl: Bitte ändern Sie Ihre akzeptierte Antwort. Dieser macht nicht das, wonach Sie gefragt haben. @enthusiasticgeek Entschuldigung, Verwechslung.
Robert Siemer
Default (Appell an die Behörde) und New (Appell an die Neuheit) bedeuten nicht unbedingt besser. RSA gilt immer noch als stark ... nur bis zu 4096, wenn Sie mehr Stärke wünschen (2048 könnte bald überholt sein). Und wenn Sie einen guten EC-Algo wollen, verwenden Sie ed25519. ECDSA ist zum Kotzen, weil es schwache NIST-Kurven verwendet, die möglicherweise sogar hinter der Tür liegen. Dies ist seit einiger Zeit ein bekanntes Problem. Aktivieren Sie also RSA, und verwenden Sie ed25519 für eine ideale Algo. Deaktivieren Sie immer DSA, das lange veraltet ist (ein Hauptgrund ist ein 1024-Bit-Schlüssel mit fester Größe), und deaktivieren Sie auch ECDSA. Probieren Sie ssh-audit für mehr.
Peter
5

Ja, OK, wechseln Sie bald zu ECDSA, aber versuchen Sie in der Zwischenzeit Folgendes:

ssh -o HostKeyAlgorithms=ssh-rsa -o FingerprintHash=md5 [email protected]
Bonkydog
quelle
Dies gibt "Falsche Konfigurationsoption: Fingerabdruck" auf meinem System (OpenSSH_6.6.1p1).
Soren Bjornstad
1
@SorenBjornstad, die FingerprintHashOption ist unnötig, lass den ganzen Teil weg.
Lucas
2

Ich habe gerade diese Zeile hinzugefügt

HostKeyAlgorithms ssh-rsa

zu

/etc/ssh/sshd_conf

und es funktioniert gut in dieser Version.

OpenSSH_7.7p2 ubuntu-4ubuntu2.2
JUWEL AHMMED
quelle
1

Nur um die Antwort von Tumbleweed zu verbessern, die einen toten Link zum Auffinden der alten Liste von Algorithmen enthält.

Entscheiden Sie sich zunächst für eine Liste von Algorithmen. Um die alte Liste zu finden, verwenden Sie ssh -vv:

ssh -vv somehost

Suchen Sie nach den 2 Zeilen wie "Host-Schlüssel-Algorithmen: ...", wobei die erste das Angebot des Servers und die zweite das des Clients zu sein scheint. Oder versuchen Sie dies, um diese beiden Zeilen automatisch auszuwählen (und drücken Sie STRG + D, um das Fenster zu schließen):

ssh -vv somehost 2>&1 | grep "host key algorithms:"

Jetzt filtern Sie es nach unten ... Sie sollten alle dss / dsa-Dateien entfernen, da sie längst veraltet sind, und Sie wollten auch ecdsa entfernen (genau wie ich), also zum Beispiel, wenn Sie Folgendes hatten:

[email protected],[email protected],[email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

Sie sollten am Ende mit:

[email protected],[email protected],ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

Bearbeiten Sie nun Ihre Konfiguration. Für deine eigene Konfiguration:

vim ~/.ssh/config

Für die systemweite Konfiguration:

sudo vim /etc/ssh/ssh_config

Fügen Sie global eine neue Zeile hinzu:

HostKeyAlgorithms [email protected],[email protected],ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

oder für einen bestimmten Host (nicht ideal für die serverweite Konfiguration):

Host somehost
    HostKeyAlgorithms [email protected],[email protected],ssh-ed25519,rsa-sha2-512,rsa-sha2-256,ssh-rsa

ssh -vvFügen Sie anstelle der eingegebenen Liste die Liste ein, die Sie aus der Ausgabe abgeleitet haben, ohne den Teil "Hostschlüsselalgorithmen:".

Peter
quelle
0

Einige Punkte sind verwirrend, da es möglich ist, Schlüsselalgorithmen aus vorhandenen Standardeinstellungen zu entfernen. Die Schlüssel der höchsten Ebene sind die neuen RSA-sha2 / 256 / 512- und ed25519-Schlüssel für beste Sicherheit mit ssh-keygen -t ras -a -b 4096 -a 113 zu gen. Die Unterstützung älterer Versionen liest anscheinend die SSH-Nachricht, dass SSH1 komplett verschwunden sein wird - seine maximal abgeschriebenen 45-Bit- und 96-Bit-DSA-Schlüssel werden ebenfalls eliminiert. Seine auf 128/1024 Bit max behoben gefunden hackbar. (Möglicherweise hat NSA das getan, und lame / excuse, da der Debug-Code Zweifel an der Bezeich- nung von Heartbleed aufkommen ließ.) Daher müssen alle kostenintensiven sicheren RSA-Schlüsselstrukturen überarbeitet werden, um höhere Standards zu unterstützen und aufrechtzuerhalten. Legen Sie fest, welche Schlüssel Sie verwenden möchten, wie in / etc / ssh / sshd_config beschrieben. Versuchen Sie, 2-Schlüssel-Authentifizierungsschlüssel auszuführen. 3-Schlüssel funktioniert auch. Beispiel: sshd_config "AuthenticationMethods publickey, publickey, publickey" - Stellen Sie sicher, dass ssh -Q kex-Listings sowohl mit A- als auch mit B-Servern oder -Desktops übereinstimmen. ecdsa-schlüssel, die in der produktion neuer sind, sind auch kina-schwach und nicht zu gebrauchen. oder get - keyexchange verweigert teilweisen Zugriff sichere Nachricht. Viele gute Infos nur geduldig, um es zu suchen.

atomic.kidd
quelle
2
Könnten Sie versuchen, diese Textwand aufzubrechen, damit es einfacher ist, ihr zu folgen? Bitte verwenden Sie die Formatierungsanleitung und formatieren Sie den Code und den Inhalt der Textdatei als Code. Wenn dies die Dinge klarer macht, setzen Sie sie in ihre eigenen Zeilen. Ich würde Ihre Antwort gerne selbst bearbeiten, wenn ich ihr folgen könnte, aber ich kann nicht.
Zanna
-5

Wenn Sie auf dem RSA-Schlüsselansatz bestehen, können Sie auch ssh-keygen -t rsaden Server eingeben, für den Sie SSH einrichten möchten.

Damit sollten öffentliche und private RSA-Schlüssel unter '~ / .ssh / id_rsa' generiert werden. Jetzt müssen Sie nur noch den öffentlichen Schlüssel $HOME/.ssh/authorized_keysvon allen Computern, von denen Sie ssh ausführen möchten, auf den Computer kopieren, auf dem Sie Ihre RSA-Schlüssel generiert haben.

Und dann lehnen Sie sich zurück und entspannen Sie sich!

Somujit
quelle
1
Ist Ihnen klar, dass es sich bei der Frage nicht um den clientseitigen Schlüssel, sondern um den Serverschlüssel handelte?
0xC0000022L