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 FILEundbad permissions. Führen Siechmod 600auf der Datei aus und versuchen Sie es erneut. - Sie haben die falsche Datei angegeben.
-ybraucht den privaten Schlüssel, nicht die.pub-Datei. - Es ist eine
.ppk-Datei. Nutzen Sie stattdessenputtygen key.ppk -Loder 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.