Comment convertir une clé .ppk en clé OpenSSH sous Linux?


188

Je sais qu'il est possible de convertir .ppk sous puttygen dans Windows, mais comment faire cela sous Linux? Est-ce possible ?

Réponses:


275

Faites-le avec du mastic.

  • Linux: avec votre gestionnaire de paquets, installez PuTTY (ou le plus petit des outils PuTTY):

    • Ubuntu sudo apt-get install putty-tools
    • Debian-like apt-get install putty-tools
    • Basé sur RPM yum install putty
    • Gentoo emerge putty
    • Archlinux sudo pacman -S putty
    • etc.
  • OS X: Installez Homebrew , puis lancezbrew install putty

Placez vos clés dans un répertoire, par exemple votre dossier personnel. Convertissez maintenant les clés PPK en paires de clés SSH: recherche dans le cache

Pour générer la clé privée :

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

et pour générer la clé publique :

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

Déplacez ces clés vers ~/.sshet assurez-vous que les autorisations sont définies sur privé pour votre clé privée:

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

Si vous avez déjà essayé d'effectuer une opération ' git clone ', vous devrez peut-être le faire aussi

chmod 666 ~/.ssh/known_hosts

salut j'ai déjà un .pub alors il est nécessaire de créer une clé publique à nouveau
— Amit Bera

1
Si vous êtes venu ici pour savoir comment procéder sous Windows, exécutez "puttygen yourkey.ppk", puis sous le menu Conversions, choisissez "Exporter la clé OpenSSH" pour obtenir la clé privée.
— Ryan Shillington

1
la solution de @jous est beaucoup plus agréable car vous n'avez pas besoin de la clé privée pour convertir une clé publique + vous n'avez pas besoin d'installer de mastic
— Tobi

Je devais ajouter cette clé à mon ./ssh/configdossier Host mysite.com Hostname mysite.com IdentityFile ~/.ssh/id_dsa IdentitiesOnly yes
— vendredi

Certains formats de courbes elliptiques (ECDS, etc.) ne sont encore disponibles que dans les outils de mastic bêta.
— Daniel W.

39
ssh-keygen -i -f id_dsa_1024_a.pub > id_dsa_1024_a_openssh.pub
  • -i le drapeau est importé d'un format autre que le format openssh
  • -f drapeau signifie lire à partir du fichier d'entrée

Source: un blogpost à burnz.wordpress.com


17
Les fichiers .ppk sont les paires de clés complètes, je ne pense pas que la commande ci-dessus ou l'article de blog s'applique à cela.
— Peter Becker

2
Je pense que je voulais dire que cela fonctionne si vous utilisez le bouton "Enregistrer la clé publique" de puttygen. ssh-keygen ne comprend pas les vrais fichiers .ppk car il leur manque les marqueurs '---- BEGIN SSH2 PUBLIC KEY ----'. Vous pouvez trouver la clé publique dans le fichier .ppk entre les lignes "Public-Lines: .." et "Private-Lines: ..".
— Juillet

1
Cela a fonctionné pour moi avec un fichier de clé publique - puttygen semble nécessiter une clé privée. il semble que tout ce qu'il a fait a été de réorganiser la partie base 64 en une seule ligne
— Jasen

2
Cela ne semble pas couvrir les clés privées, c'est pourquoi je voudrais effectuer la conversion. J'ai déjà une clé publique sauvegardée quelque part ...
— Gert van den Berg

Oui, les fichiers ppk que j'ai vus ont les marqueurs appropriés, et cela a très bien fonctionné .
— tylerl

5

Obtenez la clé privée:

ouvrez le fichier .ppk dans puttygen:

puttygen ~/.ssh/id_dsa.ppk

exporter en opensh:

Conversions → Exporter la clé OpenSSH

Obtenez la clé publique:

ouverte comme auparavant avec la clé privée avec puttygen, la clé publique est sous clé publique pour le coller dans le fichier OpenSSH allowed_keys


4

J'ai préparé un conteneur Docker pour simplifier la vie:

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

Où:

  • /path/to/file.ppk - chemin local vers votre fichier ppk
  • /path/to/output - chemin local vers l'endroit où les clés privée et publique doivent être placées

1
génial. merci pour l'image! Cependant, en attendant --volume=/path/to/file.ppk:/tmp/id.ppk, c'estid_dsa.ppk
— pHiL
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.