web-dev-qa-db-fra.com

Comment convertir une clé privée ed25519 en PuTTY ppk?

Je souhaite convertir une clé privée ed25519 (qui est générée par ssh-keygen) dans un fichier ppk. Mais j'ai eu l'erreur.

Impossible de charger la clé privée (nom de chiffrement non reconnu)

Est-ce que quelqu'un peut m'aider?

  • version openssh testée: OpenSSH_7.6p1, OpenSSL 1.1.0g 2 Nov 2017 et OpenSSH_7.6p1, OpenSSL 1.0.2n 7 Dec 2017 (sur CoreOS et ArchLinux docker container)

  • version PuTTY testée: 0.70 64bit, 0.70 32bit et snapshot (sous Windows 10)

Ma procédure est la suivante.

1. Générez une clé privée ed25519

# ssh-keygen -t ed25519 -a 100
Generating public/private ed25519 key pair.
Enter file in which to save the key (/root/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_ed25519.
Your public key has been saved in /root/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:2HfORujStwmC9c91rmDxMbaV9kVMT70gWxnRXAvNrNU root@f46f23bbad55
The key's randomart image is:
+--[ED25519 256]--+
|             +X B|
|           . +.@E|
|            + +.=|
|       o   o . o.|
|      . S o + +oo|
|       o = = +.=o|
|      . o = B + o|
|         o B = o |
|            = ...|
+----[SHA256]-----+

# cat .ssh/id_ed25519
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAACmFlczI1Ni1jdHIAAAAGYmNyeXB0AAAAGAAAABClhk1367
G8CQYpo/0c7UShAAAAZAAAAAEAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIIJiwIymcly4s66p
za/IL3ZNyT5CiMPj0R+/LnMDmABUAAAAoMJIakdbIL7TOAmX8n4xGSrtp8mc/Mr6qimZAZ
zGB7iRhNUXT+isPdf0YuC9mh5NbX43ZYFl+/sWdi2hVmJxbGTwrjaSdNzF3ZnSpi/aVlzF
t3bUCtdwhHLaLqy9unw0zPHlfcQsB700GS/bf4VKRmm1+imj3cAldUm2RF3VdI0U9/04yX
Mj+VBOmevM0i7R/0d6xUFTH3zj99xxeLI2J6A=
-----END OPENSSH PRIVATE KEY-----

# cat .ssh/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIJiwIymcly4s66pza/IL3ZNyT5CiMPj0R+/LnMDmABU root@f46f23bbad55

2. Exécutez puttygen.exe sur Windows et essayez d'importer la clé privée ed25519 (.ssh/id_ed25519)

Impossible de charger la clé privée (nom de chiffrement non reconnu)

14
takaomag

Mise à jour 2019-03-20: https://www.chiark.greenend.org.uk/~sgtatham/PuTTY/releases/ 0.71.html prend en charge ces clés

ssh-keygen -t ed25519 -f test-key-for-stackoverflow

puttygen 0.71 importing an ed25519 key successfully

Au moment d'écrire ces lignes, l'instantané puttygen de https://www.chiark.greenend.org.uk/~sgtatham/PuTTY/snapshot.html semble prendre en charge ces clés là où 0,70 ne l'a pas fait. Ce n'est pas explicitement mentionné dans le changelog.

J'ai testé Development snapshot 2019-01-17.53747ad

8
Adam Baxter

La commande dans la réponse ci-dessus imprime simplement la partie clé publique au format RFC4716.

À un moment donné, ssh-keygen génère une clé privée openssh qui n'utilise pas de chiffrement pris en charge par puttygen.

ssh-keygen ne fournit pas d'option pour spécifier le nom de chiffrement pour crypter la clé privée openssh résultante.

Il existe une solution de contournement: supprimez la phrase secrète de la clé avant d'importer dans puttygen.

$ cp ~/.ssh/id_ed25519 ~/.ssh/id_ed25519-for-PuTTY

$ ssh-keygen -p -f ~/.ssh/id_ed25519-for-PuTTY
Enter old passphrase: <your passphrase>
Enter new passphrase (empty for no passphrase): <press Enter>
Enter same passphrase again: <press Enter>

Ensuite, utilisez puttygen pour convertir ~/.ssh/id_ed25519-for-PuTTY en .ppk et définissez la phrase secrète de puttygen.

N'oubliez pas de déchiqueter et de supprimer ~/.ssh_id_ed25519-for-PuTTY par la suite pour une raison évidente.

14
mydeardiary

Vous devez exporter la clé au format RFC4716 avant d'importer la clé dans puttygen

$ ssh-keygen -e -m RFC4716 -f ~/.ssh/id_ed25519 > ~/.ssh/exported_id_ed25519

Ensuite, importez l'id_ed25519 exporté résultant dans puttygen et convertissez la clé en .ppk

6
mydeardiary

En fait, ce problème ne concerne pas Ed25519 lui-même. Cela se produit en raison du nouveau format openssh. Voici ce que man ssh-keygen affiche l'option -o.

-o Force ssh-keygen à enregistrer les clés privées en utilisant le nouveau format OpenSSH plutôt que le format PEM plus compatible. Le nouveau format a augmenté la résistance à la fissuration par mot de passe par force brute, mais n'est pas pris en charge par les versions d'OpenSSH antérieures à 6.5. Les clés Ed25519 utilisent toujours le nouveau format de clé privée.

Le nouveau format crypte le fichier de clé privée plusieurs fois (généralement environ 100 fois) avec la fonction de dérivation de clé (KDF) pour ralentir le décryptage. La recherche de plus amples détails sur le nouveau format à l'aide de bcrypt KDF pourrait commencer dans ce lien: https://pthree.org/2014/12/08/super-size-the-strength-of-your-openssh-private- touches /

vous pouvez essayer ssh-keygen avec l'option -o pour rsa ou dsa saisir une clé privée et voir puttygen ne peut pas non plus les analyser. Et comme vous pouvez le voir dans la page de manuel, vous n'avez pas le choix pour puttygen dans Ed25519.

Après quelques difficultés, maintenant j'utilise juste une clé faite avec puttygen mais je crains de ne pas pouvoir bénéficier de KDF.

4
Jang Whe-moon