Convertir une clé .ppk en OpenSSH, et inversement

Lancez puttygen key.ppk -O private-openssh -o id_ed25519. Cela écrit une clé privée OpenSSH que ssh peut utiliser, avec la même phrase secrète. Pour l'inverse, lancez puttygen id_ed25519 -O private -o key.ppk. Sur Debian et Ubuntu, l'outil se trouve dans le paquet putty-tools.

Mis à jour le . Toutes les commandes ont été exécutées avec la version 0.83 de l'outil PPK sous Debian 13, avec des clés ed25519 et RSA 3072, avec et sans phrase secrète.

Pourquoi convertir

OpenSSH ne sait pas lire le format PPK. Lui donner directement un fichier .ppk échoue. Sur notre système de test, le message était celui-ci ; d'autres versions peuvent en afficher un autre, comme celui de invalid format :

Load key "key.ppk": error in libcrypto

La conversion ne change que le format du fichier. La clé reste la même : les serveurs qui l'acceptent déjà continuent de l'accepter.

Installer l'outil de conversion

# Debian and Ubuntu
sudo apt install putty-tools

# macOS with Homebrew
brew install putty

De .ppk vers OpenSSH

puttygen key.ppk -O private-openssh -o ~/.ssh/id_ed25519
puttygen key.ppk -O public-openssh -o ~/.ssh/id_ed25519.pub

Si la clé a une phrase secrète, puttygen la demande. Le nouveau fichier garde la même phrase secrète. Vérifiez ensuite le résultat :

ssh-keygen -lf ~/.ssh/id_ed25519.pub
puttygen key.ppk -O fingerprint

Les deux affichent la même empreinte SHA256:. Dans notre test, le fichier de sortie a été créé en mode 600, ce que ssh attend. Si ssh se plaint malgré tout, voir unprotected private key file.

Pour obtenir seulement la ligne de clé publique d'une clé OpenSSH, voyez comment retrouver la clé publique depuis la clé privée.

Clés RSA : ancien ou nouveau format

Pour une clé RSA, private-openssh écrit l'ancien format, avec BEGIN RSA PRIVATE KEY en première ligne. Pour ed25519, il écrit toujours le nouveau. Si vous voulez aussi le format récent pour RSA, utilisez :

puttygen key.ppk -O private-openssh-new -o ~/.ssh/id_rsa

OpenSSH actuel lit les deux. N'utilisez l'ancien que pour un outil qui ne sait pas lire BEGIN OPENSSH PRIVATE KEY.

D'OpenSSH vers .ppk

puttygen ~/.ssh/id_ed25519 -O private -o key.ppk

Vérifiez la première ligne du nouveau fichier :

PuTTY-User-Key-File-3: ssh-ed25519

PPK version 3 et anciens outils

Ce 3 est la version du format. C'est la valeur par défaut depuis 2021. Il protège les phrases secrètes avec Argon2, et les outils d'avant 2021 qui acceptent les fichiers PPK ne peuvent pas le lire. Pour ceux-là, écrivez la version 2 :

puttygen ~/.ssh/id_ed25519 -O private -o key.ppk --ppk-param version=2

La première ligne indique alors PuTTY-User-Key-File-2. La version 2 résiste moins bien aux tentatives de devinette de la phrase secrète : ne l'utilisez que si vous le devez, et mettez l'outil à jour dès que possible.

Utilisation en script avec une phrase secrète

Ces options lisent la phrase secrète dans un fichier au lieu de la demander. Mettez le fichier dans un endroit privé et supprimez-le ensuite :

puttygen key.ppk --old-passphrase pass.txt -O private-openssh -o id_ed25519

Ajoutez --new-passphrase newpass.txt pour en définir une autre. Pour retirer la phrase secrète, utilisez un fichier vide, ou /dev/null. Ne le faites que si vous voulez vraiment laisser la clé sans protection.

Avec la fenêtre du générateur de clés sous Windows

  1. Cliquez sur Load et ouvrez le fichier .ppk, ou utilisez Conversions puis Import pour une clé OpenSSH.
  2. Pour écrire une clé OpenSSH, utilisez Conversions puis Export OpenSSH key.
  3. Pour écrire un PPK, cliquez sur Save private key.

Questions

OpenSSH peut-il utiliser un fichier .ppk ?

Non. ssh ne lit pas le format PPK. Convertissez d'abord la clé comme indiqué plus haut et utilisez le nouveau fichier.

Convertir un .ppk change-t-il la clé ?

Non. Seul le format du fichier change : les serveurs qui acceptent la clé continuent de l'accepter. L'empreinte est la même avant et après.

ssh-keygen peut-il convertir une clé privée .ppk ?

Non. ssh-keygen ne lit pas les clés privées PPK. Utilisez le convertisseur présenté plus haut.

Sources

Autres guides : Clés et connexion

Tous les guides