490 votes

Comment convertir les paires de clés SSH générées à l'aide de PuTTYgen (Windows) en paires de clés utilisées par ssh-agent et Keychain (Linux)

J'ai généré des paires de clés à l'aide de PuTTYgen et je me suis connecté à l'aide de Pageant, de sorte que je n'ai à saisir ma phrase de passe qu'une seule fois au démarrage de mon système.

Comment puis-je réaliser cela sous Linux ? J'ai entendu parler de keychain mais j'ai entendu dire qu'il utilise un format de paire de clés différent - je ne veux pas changer mes clés Windows et ce serait bien si je pouvais me connecter de la même manière sous Windows et Linux.

0 votes

Il ne devrait pas y avoir de problèmes pour utiliser les clés sous linux également... il suffit de les copier et d'ajouter le pub aux clés autorisées... bien que je reconnaisse ne pas comprendre entièrement votre question.

17 votes

Non, il y en a une - je sais que les formats de clés utilisés par PuttyGen et ssh-agent sont différents, et qu'ils doivent être convertis explicitement - voir la réponse détaillée de Kaleb ci-dessous.

741voto

Kaleb Pederson Points 22428

puttygen permet d'exporter votre clé privée dans un format compatible avec OpenSSH. Vous pouvez ensuite utiliser les outils OpenSSH pour recréer la clé publique.

  1. Ouvrez PuttyGen

  2. Cliquez sur Charger

  3. Chargez votre clé privée

  4. Ir a Conversions->Export OpenSSH et exporter votre clé privée

  5. Copiez votre clé privée dans ~/.ssh/id_dsa (o id_rsa ).

  6. Créer la version RFC 4716 de la clé publique en utilisant ssh-keygen

    ssh-keygen -e -f ~/.ssh/id_dsa > ~/.ssh/id_dsa_com.pub
  7. Convertir la version RFC 4716 de la clé publique au format OpenSSH :

    ssh-keygen -i -f ~/.ssh/id_dsa_com.pub > ~/.ssh/id_dsa.pub

Ver ce y ce pour plus d'informations.

12 votes

Pour ceux qui obtiennent It is required that your private key files are NOT accessible by others erreur comme si j'avais lancé cd ~/.ssh y chmod 700 id_rsa

77 votes

Vous voulez dire chmod 600 id_rsa . Le fichier ne doit pas nécessairement être exécutable :)

2 votes

Cette réponse a été la clé pour obtenir ssh à partir de la ligne de commande Windows en utilisant des clés sans mot de passe pour moi (spécifiquement pour l'accès à git). Cela m'aurait évité heures de douleur si je l'avais vu plus tôt ! Merci !

175voto

bukzor Points 11085

Si tout ce que vous avez est une clé publique d'un utilisateur au format PuTTY, vous pouvez la convertir au format standard openssh comme suit :

ssh-keygen -i -f keyfile.pub > newkeyfile.pub

Références

Copie de l'article

J'oublie toujours ça, alors je vais l'écrire ici. Les non-geeks, juste continuez à marcher.

La façon la plus courante de créer une clé sous Windows est d'utiliser Putty/Puttygen. Puttygen fournit un utilitaire soigné permettant de convertir une clé privée linux en format Putty. Cependant, ce qui n'est pas abordé est que lorsque vous enregistrez la la clé publique en utilisant Puttygen, elle ne fonctionnera pas sur un serveur linux. Windows place certaines données dans des zones différentes et ajoute des sauts de ligne.

La solution : Lorsque vous arrivez à l'écran de la clé publique dans la création de votre paires de clés dans puttygen, copiez la clé publique et collez-la dans un fichier dans un fichier texte avec l'extension .pub. Vous épargnerez à votre administrateur système des heures de frustration en lisant des articles comme celui-ci.

CEPENDANT, messieurs les sysadmins, vous obtenez invariablement un fichier clé bancal qui ne génère aucun message d'erreur dans l'avertissement. aucun message d'erreur dans le journal d'authentification sauf, aucune clé trouvée, essayez mot de passe ; même si les clés de tout le monde fonctionnent bien, et que vous avez renvoyé cette clé à l'utilisateur 15 fois.

ssh-keygen -i -f keyfile.pub > newkeyfile.pub

Devrait convertir une clé publique puttygen existante au format OpenSSH.

2 votes

De plus, vous pouvez copier le commentaire de l'utilisateur à partir de la page d'accueil du site. Comment: et collez-la sur la même ligne que la nouvelle clé, en la séparant par un espace. Je ne sais pas pourquoi ssh-keygen ne le fait pas par défaut.

3 votes

Cela me donne une erreur de : decode blob failed: invalid format

0 votes

Si vous lisez l'article original, le détail clé est que cette approche ne fonctionne que si vous copiez la clé de puttygen en passant par son interface utilisateur, elle ne convertira pas une clé déjà générée à partir de fichiers produits par puttygen.

53voto

John Jawed Points 91

Si vous souhaitez récupérer les clés privées et publiques à partir d'un fichier de clés formaté par PuTTY, vous pouvez utiliser la méthode suivante puttygen sur les systèmes *nix. Pour la plupart des systèmes basés sur apt puttygen fait partie de la putty-tools paquet.

Sortie d'une clé privée à partir d'un fichier de clé formaté par PuTTY :

$ puttygen keyfile.pem -O private-openssh -o avdev.pvk

Pour la clé publique :

$ puttygen keyfile.pem -L

0 votes

Si, pour une raison quelconque, vous DEVEZ faire cela sur une machine Windows (vous ne pouvez pas transférer en toute sécurité toutes les clés sur un *nix) et que l'utilisation de l'interface graphique est encombrante, essayez de compiler les sources Unix sous Cygwin. Ce puttygen.exe vous donnera le "mode batch" CLI comme décrit ci-dessus.

2 votes

OSX : brew install putty

1 votes

Cela devrait être inversé : puttygen inppk -O private-openssh -o outpem y puttygen inppk -L (o ssh-keygen -y -f outpem )

14voto

jfreak53 Points 501

J'ai récemment rencontré ce problème alors que je passais de Putty pour Linux à Remmina pour Linux. J'ai donc beaucoup de fichiers PPK pour Putty dans ma base de données de .putty car je l'utilise depuis 8 ans. Pour cela, j'ai utilisé un simple for pour le shell bash pour faire tous les fichiers :

cd ~/.putty
for X in *.ppk; do puttygen $X -L > ~/.ssh/$(echo $X | sed 's,./,,' | sed 's/.ppk//g').pub; puttygen $X -O private-openssh -o ~/.ssh/$(echo $X | sed 's,./,,' | sed 's/.ppk//g').pvk; done;

Très rapide et précis, il a fait le travail pour tous les fichiers que Putty avait. S'il trouve une clé avec un mot de passe, il s'arrête et demande d'abord le mot de passe pour cette clé, puis il continue.

2 votes

Pour les paresseux comme moi, voici un copier-coller pour obtenir puttygen sur ubuntu : sudo apt-get install putty-tools

0 votes

"simple" - je ne voudrais pas que ce soit compliqué !

8voto

Bradley Kreider Points 694

Il est probablement plus facile de créer vos clés sous linux et d'utiliser PuTTYgen pour convertir les clés au format PuTTY.

PuTTY Faq : A.2.2

14 votes

Malheureusement, ce n'est pas une option si vous avez des clés existantes que vous devez utiliser.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X