Öffentlichen SSH-Schlüssel aus dem privaten Schlüssel wiederherstellen

Führen Sie ssh-keygen -y -f ~/.ssh/id_ed25519 > ~/.ssh/id_ed25519.pub aus. Das liest den privaten Schlüssel und gibt den passenden öffentlichen aus, eine verlorene .pub-Datei lässt sich also immer neu erzeugen. Hat der Schlüssel eine Passphrase, müssen Sie sie eingeben. Umgekehrt geht es nicht: Aus einem öffentlichen Schlüssel erhalten Sie keinen privaten.

Gerade kein Terminal zur Hand? Wardterm liest den öffentlichen Schlüssel direkt aus einem importierten privaten Schlüssel. Zeigen

Aktualisiert am . Befehle mit OpenSSH 10.0 auf Debian 13 ausgeführt, mit ed25519- und RSA-Schlüsseln, mit und ohne Passphrase.

Der Befehl

ssh-keygen -y -f ~/.ssh/id_ed25519
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINH9eelf0P7eT5ue6SualUXFrh1c9p3Maaem93iZtC2Q you@laptop

Das gibt den Schlüssel auf dem Bildschirm aus. Um ihn zurück in seine Datei zu schreiben, leiten Sie die Ausgabe dorthin um:

ssh-keygen -y -f ~/.ssh/id_ed25519 > ~/.ssh/id_ed25519.pub

Derselbe Befehl funktioniert mit einem .pem-Schlüssel von einem Cloud-Anbieter, etwa einem AWS-Schlüsselpaar: ssh-keygen -y -f key.pem.

Wie Sie den Schlüssel wieder auf einen Server bringen, zeigt authorized_keys erklärt.

Was schiefgehen kann

  • Sie haben die Passphrase vergessen. Sie erhalten Load key "id_ed25519": incorrect passphrase supplied to decrypt private key. Ohne die Passphrase gibt es keinen Weg daran vorbei. Erzeugen Sie einen neuen Schlüssel.
  • Die Datei ist für andere lesbar. Sie erhalten UNPROTECTED PRIVATE KEY FILE und bad permissions. Führen Sie chmod 600 auf der Datei aus und versuchen Sie es erneut.
  • Sie haben die falsche Datei angegeben. -y braucht den privaten Schlüssel, nicht die .pub-Datei.
  • Es ist eine .ppk-Datei. Nutzen Sie stattdessen puttygen key.ppk -L oder wandeln Sie sie zuerst um.

Der Kommentar kann fehlen

Das neue OpenSSH-Format speichert den Kommentar im privaten Schlüssel, er kommt also in der Ausgabe zurück. Ein Schlüssel im alten Format, dessen erste Zeile BEGIN RSA PRIVATE KEY lautet, hat keinen, und Sie erhalten nur Typ und Schlüssel. Das funktioniert genauso gut. Ergänzen Sie am Zeilenende von Hand einen Kommentar, wenn Sie einen möchten.

Prüfen, ob eine .pub-Datei zu einem privaten Schlüssel passt

ssh-keygen -lf ist dafür keine verlässliche Prüfung. Bei einem privaten Schlüssel mit einer .pub-Datei daneben liest es die .pub-Datei, zeigt also den falschen Fingerprint, wenn die beiden nicht zusammengehören. Wir haben das mit einem nicht passenden Paar bestätigt. Vergleichen Sie stattdessen die echten Schlüssel:

diff <(ssh-keygen -y -f ~/.ssh/id_ed25519 | cut -d' ' -f1,2) <(cut -d' ' -f1,2 ~/.ssh/id_ed25519.pub) && echo same

Das funktioniert in bash und zsh. Es gibt same aus, wenn sie übereinstimmen, und zeigt den Unterschied, wenn nicht. Das cut lässt den Kommentar aus dem Vergleich heraus.

Fragen

Kann man den privaten Schlüssel aus dem öffentlichen gewinnen?

Nein. Der öffentliche Schlüssel wird aus dem privaten berechnet, und diese Rechnung lässt sich nicht umkehren. Ist der private Schlüssel verloren, erzeugen Sie ein neues Paar.

Warum fragt ssh-keygen -y nach einer Passphrase?

Der private Schlüssel ist damit verschlüsselt, und ssh-keygen muss ihn entschlüsseln, um den öffentlichen Teil zu berechnen. Ohne Passphrase geht es nicht.

Spielt der Kommentar am Ende der .pub-Zeile eine Rolle?

Nein. Er ist nur eine Beschriftung, zum Beispiel you@laptop. Server ignorieren ihn, ein öffentlicher Schlüssel ohne Kommentar funktioniert genauso.

Quellen

Mehr zu Schlüssel und Anmeldung

Alle Anleitungen