Wie konvertiere ich den .ppk-Schlüssel unter Linux in den OpenSSH-Schlüssel?

188

Ich weiß, dass es unter Windows möglich ist, .ppk unter puttygen zu konvertieren, aber wie geht das unter Linux? Ist das möglich ?

Marioosh
quelle

Antworten:

275

Mach es mit Putty.

  • Linux: Installieren Sie mit Ihrem Paketmanager PuTTY (oder die minimaleren PuTTY-Tools):

    • Ubuntu sudo apt-get install putty-tools
    • Debian-ähnlich apt-get install putty-tools
    • RPM basiert yum install putty
    • Gentoo emerge putty
    • Archlinux sudo pacman -S putty
    • usw.
  • OS X: Installieren Sie Homebrew und führen Sie es ausbrew install putty

Legen Sie Ihre Schlüssel in einem Verzeichnis ab, z. B. in Ihrem privaten Ordner. Konvertieren Sie nun die PPK-Schlüssel in SSH-Schlüsselpaare: Cache-Suche

So generieren Sie den privaten Schlüssel:

cd ~
puttygen id_dsa.ppk -O private-openssh -o id_dsa

und um den öffentlichen Schlüssel zu generieren :

puttygen id_dsa.ppk -O public-openssh -o id_dsa.pub

Verschieben Sie diese Schlüssel nach ~/.sshund stellen Sie sicher, dass die Berechtigungen für Ihren privaten Schlüssel auf privat festgelegt sind:

mkdir -p ~/.ssh
mv -i ~/id_dsa* ~/.ssh
chmod 600 ~/.ssh/id_dsa
chmod 666 ~/.ssh/id_dsa.pub

Wenn Sie bereits versucht haben, einen Git-Klon durchzuführen, müssen Sie dies möglicherweise auch tun

chmod 666 ~/.ssh/known_hosts
Stanley Williams
quelle
Hi, ich habe bereits eine .pub-Datei, dann muss der öffentliche Schlüssel erneut erstellt werden
Amit Bera,
1
Wenn Sie hierher gekommen sind, um herauszufinden, wie dies unter Windows funktioniert, führen Sie "puttygen yourkey.ppk" aus und wählen Sie dann im Menü "Konvertierungen" die Option "OpenSSH-Schlüssel exportieren", um den privaten Schlüssel abzurufen.
Ryan Shillington
1
Die Lösung von @jous ist viel netter, da Sie nicht den privaten Schlüssel benötigen, um einen öffentlichen Schlüssel zu konvertieren + Sie müssen Putty nicht installieren
Tobi
Ich musste diesen Schlüssel zu meiner ./ssh/configDatei hinzufügenHost mysite.com Hostname mysite.com IdentityFile ~/.ssh/id_dsa IdentitiesOnly yes
vladkras
Einige elliptische Kurvenformate (ECDS usw.) sind bisher nur in den Beta-Putty-Tools verfügbar.
Daniel W.
39
ssh-keygen -i -f id_dsa_1024_a.pub > id_dsa_1024_a_openssh.pub
  • -i flag wird nicht aus dem openssh-Format importiert
  • -f flag bedeutet, dass aus der Eingabedatei gelesen wird

Quelle: ein Blogpost auf burnz.wordpress.com

jous
quelle
17
PPK-Dateien sind die vollständigen Schlüsselpaare. Ich glaube nicht, dass der obige Befehl oder der Blog-Beitrag darauf zutreffen.
Peter Becker
2
Ich denke, ich meinte, dass es funktioniert, wenn Sie den "Save public key" -Button von puttygen verwenden. ssh-keygen versteht wahre .ppk-Dateien nicht, weil ihnen diese '---- BEGIN SSH2 PUBLIC KEY ----'-Marker fehlen. Sie finden den öffentlichen Schlüssel jedoch in der .ppk-Datei zwischen den Zeilen "Public-Lines: .." und "Private-Lines: ..".
7.
1
Das hat bei mir mit einer Public-Key-Datei geklappt - puttygen scheint einen privaten Schlüssel zu benötigen. Es scheint, dass alles, was es getan hat, darin bestand, den Base-64-Teil in eine einzige Zeile
umzuordnen
2
Dies scheint keine privaten Schlüssel abzudecken, weshalb ich die Konvertierung durchführen möchte, ich habe bereits irgendwo einen öffentlichen Schlüssel gespeichert ...
Gert van den Berg
Ja, die PPK Dateien , die ich gesehen habe , haben die entsprechenden Markierungen haben, und das hat funktioniert ganz gut .
Tyler
5

Holen Sie sich den privaten Schlüssel:

Öffne die .ppk Datei in puttygen:

puttygen ~/.ssh/id_dsa.ppk

als openssh exportieren:

Konvertierungen → OpenSSH-Schlüssel exportieren

Holen Sie sich den öffentlichen Schlüssel:

Wie vor dem privaten Schlüssel mit puttygen geöffnet, befindet sich der öffentliche Schlüssel unter dem öffentlichen Schlüssel zum Einfügen in die OpenSSH-Datei authorized_keys

Bar Horing
quelle
4

Ich habe einen Docker-Container vorbereitet, um das Leben zu vereinfachen:

docker run --rm \
           --volume=/path/to/file.ppk:/tmp/id_dsa.ppk \
           --volume=/path/to/output:/tmp/out/ \
           czerasz/putty-tools

Wo:

  • /path/to/file.ppk - Lokaler Pfad zu Ihrer ppk-Datei
  • /path/to/output - Lokaler Pfad zu dem Ort, an dem der private und öffentliche Schlüssel abgelegt werden soll
czerasz
quelle
1
groß. Danke für das Bild! aber mittlerweile ist es --volume=/path/to/file.ppk:/tmp/id.ppkund nichtid_dsa.ppk
pHiL