web-dev-qa-db-fra.com

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 une connexion à l'aide de Pageant, de sorte que je ne dois entrer mon mot de passe qu'une seule fois au démarrage de mon système.

Comment est-ce que je réalise ceci dans Linux? J'ai entendu parler de keychain mais j'entends 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 manière transparente de la même manière sous Windows et Linux.

429
TCSGrad

puttygen prend en charge l'exportation de votre clé privée vers un format compatible 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. Allez à Conversions->Export OpenSSH et exportez votre clé privée
  5. Copiez votre clé privée dans ~/.ssh/id_dsa (ou id_rsa).
  6. Créez la version RFC 4716 de la clé publique à l'aide de ssh-keygen

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

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

Voir this et this pour plus d'informations.

665
Kaleb Pederson

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

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

Références

Copie de l'article

Je n'arrête pas d'oublier ça alors je vais l'écrire ici. Non-geeks, continuez à marcher.

Le moyen le plus courant de créer une clé sous Windows consiste à utiliser PuTTY/Puttygen. Puttygen fournit un utilitaire pratique pour convertir une clé privée linux au format PuTTY. Cependant, ce qui n'est pas abordé, c'est que lorsque vous enregistrez la clé publique à l'aide de puttygen, cela ne fonctionnera pas sur un serveur linux. Windows place des données dans différentes zones et ajoute des sauts de ligne.

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

CEPENDANT, administrateurs système, vous obtenez invariablement le fichier de clé aléatoire qui ne génère aucun message d'erreur dans le journal d'authentification, à l'exception du paramètre Aucune clé trouvée lorsque vous essayez d'utiliser un mot de passe. bien que les clés de tous les autres fonctionnent bien et que vous ayez 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.

146
bukzor

Les versions les plus récentes de PuTTYgen (la mienne est à 0.64) peuvent afficher la clé publique OpenSSH à coller dans le système Linux dans le fichier .ssh/authorized_keys, comme indiqué dans l'image suivante:

enter image description here

135
Zac

Si vous souhaitez récupérer les clés privées et publiques d'un fichier de clés au format PuTTY, vous pouvez également utiliser puttygen sur les systèmes * nix. Pour la plupart des systèmes apt, puttygen fait partie du paquetage PuTTY-tools.

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

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

Pour la clé publique:

$ puttygen keyfile.pem -L

49
John Jawed
Sudo apt-get install PuTTY

Cela installera automatiquement l'outil puttygen.

Maintenant, pour convertir le fichier PPK à utiliser avec la commande SSH, exécutez la procédure suivante dans le terminal

puttygen mykey.ppk -O private-openssh -o my-openssh-key

Ensuite, vous pouvez vous connecter via SSH avec:

ssh -v [email protected] -i my-openssh-key

http://www.graphicmist.in/use-your-PuTTY-ppk-file-to-ssh-remote-server-in-ubuntu/#comment-286

21
Purnendu Singh

J'ai récemment eu ce problème alors que je passais de PuTTY pour Linux à Remmina pour Linux. J'ai donc beaucoup de fichiers PPK pour PuTTY dans mon répertoire .PuTTY car je l'utilise depuis 8 ans. Pour cela, j’ai utilisé une simple commande for pour que Bash Shell puisse traiter 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 rapidement et au point, le travail a été fait pour tous les fichiers de PuTTY. 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 continue.

14
jfreak53

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

8
Bradley Kreider

Je pense que TCSgrad essayait de demander (il y a quelques années) comment faire en sorte que Linux se comporte comme son ordinateur Windows. En d'autres termes, il existe un agent (pageant) qui contient une copie déchiffrée d'une clé privée, de sorte que la phrase secrète ne doit être insérée qu'une seule fois. Ensuite, le client ssh, PuTTY, peut se connecter aux machines sur lesquelles sa clé publique est répertoriée comme "autorisée" sans invite de mot de passe.

L’analogique utilisé est que Linux , agissant en tant que client ssh , dispose d’un agent qui détient une clé privée déchiffrée de sorte que, lorsque TCSgrad tape "ssh Host", La commande ssh obtiendra sa clé privée et partira sans être invité à entrer un mot de passe. Bien entendu, l’hôte devrait détenir la clé publique dans ~/.ssh/allowed_keys.

L'analogue de Linux à ce scénario est réalisé à l'aide de ssh-agent (l'analogue de reconstitution historique) et de ssh-add (l'inverse d'ajouter une clé privée à reconstitution historique).

La méthode qui a fonctionné pour moi a été d’utiliser: $ ssh-agent $ Shell Ce $ Shell était le tour de magie dont j'avais besoin pour que l’agent fonctionne et continue à fonctionner. J'ai trouvé ça quelque part sur le net et cela a pris fin en quelques heures à me frapper la tête contre le mur.

Nous avons maintenant l'analogue de pageant en cours d'exécution, un agent sans clé chargée.

Taper $ ssh-add par lui-même ajoutera (par défaut) les clés privées listées dans les fichiers d’identité par défaut dans ~/.ssh.

Un article Web avec beaucoup plus de détails peut être trouvé ici

6
kovacsbv