Warum Sie umwandeln müssen
OpenSSH kann das PPK-Format nicht lesen. Wenn Sie ihm direkt eine .ppk-Datei geben, scheitert es. Auf unserem Testsystem lautete die Meldung wie unten, andere Versionen zeigen eine andere, etwa die unter invalid format:
Load key "key.ppk": error in libcrypto
Die Umwandlung ändert nur das Dateiformat. Der Schlüssel bleibt derselbe, Server, die ihn bereits akzeptieren, akzeptieren ihn also weiter.
Das Umwandlungswerkzeug installieren
# Debian and Ubuntu
sudo apt install putty-tools
# macOS with Homebrew
brew install putty
Von .ppk zu OpenSSH
puttygen key.ppk -O private-openssh -o ~/.ssh/id_ed25519
puttygen key.ppk -O public-openssh -o ~/.ssh/id_ed25519.pub
Hat der Schlüssel eine Passphrase, fragt puttygen danach. Die neue Datei behält dieselbe Passphrase. Prüfen Sie dann das Ergebnis:
ssh-keygen -lf ~/.ssh/id_ed25519.pub
puttygen key.ppk -O fingerprint
Beide geben denselben SHA256:-Fingerabdruck aus. Die Ausgabedatei wurde in unserem Test mit Modus 600 angelegt, was ssh verlangt. Beschwert sich ssh trotzdem, siehe unprotected private key file.
Wie Sie aus einem OpenSSH-Schlüssel nur die Zeile mit dem öffentlichen Schlüssel erhalten, steht unter öffentlichen Schlüssel aus dem privaten erzeugen.
RSA-Schlüssel: altes oder neues Format
Bei einem RSA-Schlüssel schreibt private-openssh das alte Format, mit BEGIN RSA PRIVATE KEY als erster Zeile. Bei ed25519 schreibt es immer das neue. Wollen Sie das neuere Format auch für RSA, nutzen Sie:
puttygen key.ppk -O private-openssh-new -o ~/.ssh/id_rsa
Aktuelles OpenSSH liest beide. Nehmen Sie das alte nur für ein Werkzeug, das BEGIN OPENSSH PRIVATE KEY nicht lesen kann.
Von OpenSSH zu .ppk
puttygen ~/.ssh/id_ed25519 -O private -o key.ppk
Prüfen Sie die erste Zeile der neuen Datei:
PuTTY-User-Key-File-3: ssh-ed25519
PPK Version 3 und ältere Werkzeuge
Diese 3 ist die Formatversion. Sie ist seit 2021 der Standard. Sie schützt Passphrasen mit Argon2, und Werkzeuge von vor 2021, die PPK-Dateien akzeptieren, können sie nicht lesen. Für diese schreiben Sie Version 2:
puttygen ~/.ssh/id_ed25519 -O private -o key.ppk --ppk-param version=2
Die erste Zeile lautet dann PuTTY-User-Key-File-2. Version 2 widersteht dem Raten der Passphrase schlechter, nehmen Sie sie also nur, wenn es sein muss, und aktualisieren Sie das Werkzeug, sobald Sie können.
Skriptgesteuert mit Passphrase
Diese Optionen lesen die Passphrase aus einer Datei, statt zu fragen. Legen Sie die Datei an einem privaten Ort ab und löschen Sie sie danach:
puttygen key.ppk --old-passphrase pass.txt -O private-openssh -o id_ed25519
Fügen Sie --new-passphrase newpass.txt hinzu, um eine andere zu setzen. Um die Passphrase zu entfernen, nehmen Sie eine leere Datei oder /dev/null. Tun Sie das nur, wenn Sie den Schlüssel wirklich ungeschützt lassen wollen.
Mit dem Fenster des Schlüsselgenerators unter Windows
- Klicken Sie auf Load und öffnen Sie die
.ppk-Datei, oder nutzen Sie für einen OpenSSH-Schlüssel Conversions und dann Import. - Um OpenSSH zu schreiben, nutzen Sie Conversions und dann Export OpenSSH key.
- Um PPK zu schreiben, klicken Sie auf Save private key.
Fragen
Kann OpenSSH eine .ppk-Datei verwenden?
Nein. ssh liest das PPK-Format nicht. Wandeln Sie den Schlüssel zuerst wie oben gezeigt um und verwenden Sie die neue Datei.
Ändert die Umwandlung einer .ppk-Datei den Schlüssel?
Nein. Nur das Dateiformat ändert sich, Server, die den Schlüssel akzeptieren, akzeptieren ihn also weiter. Der Fingerabdruck ist vorher und nachher gleich.
Kann ssh-keygen einen privaten .ppk-Schlüssel umwandeln?
Nein. ssh-keygen liest keine privaten PPK-Schlüssel. Verwenden Sie das oben gezeigte Umwandlungswerkzeug.
Quellen
- Schlüsselgenerator, Handbuch Kapitel 8
- PPK-Dateiformat, Handbuch Anhang C
- ssh-keygen(1), OpenBSD-Handbuch