Come convertire la chiave .ppk in chiave OpenSSH sotto Linux?


188

So che è possibile convertire .ppk sotto puttygen in Windows, ma come farlo su Linux? È possibile ?

Risposte:


275

Fallo con Putty.

  • Linux: con il tuo gestore pacchetti, installa PuTTY (o gli strumenti PuTTY più minimali):

    • Ubuntu sudo apt-get install putty-tools
    • Debian-like apt-get install putty-tools
    • Basato su RPM yum install putty
    • Gentoo emerge putty
    • Archlinux sudo pacman -S putty
    • eccetera.
  • OS X: installa Homebrew , quindi eseguibrew install putty

Inserire le chiavi in ​​una directory, ad esempio la cartella principale. Ora converti le chiavi PPK in coppie di chiavi SSH: ricerca nella cache

Per generare la chiave privata :

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

e per generare la chiave pubblica :

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

Sposta queste chiavi in ~/.sshe assicurati che le autorizzazioni siano impostate su private per la tua chiave privata:

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

Se hai già provato a eseguire un'operazione ' git clone ', potresti dover fare anche questo

chmod 666 ~/.ssh/known_hosts

ciao ho già un .pub quindi è necessario creare di nuovo la chiave pubblica
Amit Bera

1
Se sei venuto qui alla ricerca di come farlo in Windows, esegui "puttygen yourkey.ppk", quindi nel menu Conversioni scegli "Esporta chiave OpenSSH" per ottenere la chiave privata.
Ryan Shillington,

1
la soluzione di @jous è molto più bella poiché non è necessaria la chiave privata per convertire una chiave pubblica + non è necessario installare putty
Tobi

Ho dovuto aggiungere questa chiave al mio ./ssh/configfile Host mysite.com Hostname mysite.com IdentityFile ~/.ssh/id_dsa IdentitiesOnly yes
vladkras il

Alcuni formati di curve ellittiche (ECDS ecc.) Sono ancora disponibili solo negli strumenti beta putty.
Daniel W.

39
ssh-keygen -i -f id_dsa_1024_a.pub > id_dsa_1024_a_openssh.pub
  • -i flag è importato da un formato diverso da openssh
  • -f flag significa letto dal file di input

Fonte: un post sul blog su burnz.wordpress.com


17
I file .ppk sono le coppie di chiavi complete, non credo che il comando sopra o il post del blog si applichino a questo.
Peter Becker,

2
Penso che volevo dire che funziona se si utilizza il pulsante "Salva chiave pubblica" di puttygen. ssh-keygen non capisce i veri file .ppk perché mancano di quei marcatori '---- BEGIN SSH2 PUBLIC KEY ----'. Puoi trovare la chiave pubblica nel file .ppk tra le righe "Public-Lines: .." e "Private-Lines: ..".
luglio

1
Questo ha funzionato per me con un file a chiave pubblica - puttygen sembra richiedere una chiave privata. sembra che tutto ciò che ha fatto è stato riorganizzare la parte base 64 in un'unica riga
Jasen

2
Questo non sembra coprire le chiavi private, motivo per cui vorrei fare la conversione, ho già una chiave pubblica salvata da qualche parte ...
Gert van den Berg

Sì, i file ppk che ho visto hanno avuto i marcatori appropriati e questo ha funzionato bene .
tylerl,

5

Ottieni la chiave privata:

apri il file .ppk in puttygen:

puttygen ~/.ssh/id_dsa.ppk

esporta come openssh:

Conversioni → Esporta chiave OpenSSH

Ottieni la chiave pubblica:

aperto come prima della chiave privata con puttygen, la chiave pubblica è sotto chiave pubblica per incollare nel file OpenSSH authorized_keys


4

Ho preparato un contenitore Docker per semplificare la vita:

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

Dove:

  • /path/to/file.ppk - percorso locale del file ppk
  • /path/to/output - percorso locale in cui posizionare la chiave privata e pubblica

1
grande. grazie per l'immagine! tuttavia nel frattempo è suo --volume=/path/to/file.ppk:/tmp/id.ppke noid_dsa.ppk
pHiL
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.