103 votes

Comment obtenir un fichier .pem à partir d'une paire de clés ssh ?

J'ai créé une paire de clés en utilisant ssh-keygen et obtenu les deux fichiers classiques id_rsa et id_rsa.pub.

J'ai importé la clé publique dans mon compte AWS EC2.

Maintenant j'ai créé une instance Windows et pour décrypter le mot de passe de cette instance, la console AWS me demande un fichier .pem. Comment puis-je obtenir ce fichier .pem à partir de mes deux fichiers id_rsa et id_rsa.pub ?

105voto

fuero Points 9047

According to ceci, cette commande peut être utilisée :

ssh-keygen -f id_rsa -e -m pem

Cela convertira votre clé publique dans un format compatible avec OpenSSL. Votre clé privée est déjà au format PEM et peut être utilisée telle quelle (comme Michael Hampton l'a indiqué).

Vérifiez bien si AWS ne demande pas un certificat (X.509) au format PEM, ce qui serait une chose différente de vos clés SSH.

3 votes

Mais ils n'ont pas besoin de la clé publique, n'est-ce pas ? Ils ont besoin de la clé privée pour décrypter leur mot de passe depuis la Console AWS.

0 votes

Je n'ai aucune idée de ce dont OP a besoin pour cela.

0 votes

Pas sûr à quel point vous êtes familier avec AWS, mais lorsque vous lancez une instance Windows (essentiellement un serveur), AWS garde le mot de passe pour vous jusqu'à ce que vous leur donniez votre clé privée. Ensuite, ils vous donnent le mot de passe du serveur. De cette façon, les serveurs Windows et Linux sur AWS dépendent tous les deux des clés privées.

57voto

Orbling Points 191

Utiliser ssh-keygen pour exporter la clé au format .pem a fonctionné pour moi.

ssh-keygen -f id_rsa.pub -m 'PEM' -e > id_rsa.pub.pem

Ensuite, il suffit de copier la clé .pem au besoin.

Options comme suit: (Voir man ssh-keygen)

  • -f id_rsa.pub: fichier d'entrée
  • -m 'PEM': format de sortie PEM
  • -e: sortie vers STDOUT

0 votes

Pour moi, le format de clé 'pkcs8' fonctionne pour vérifier la signature comme suit : "ssh-keygen ... -m pkcs8 ..."

0 votes

Pour moi sur Windows, remplacez 'PEM' par pem: ssh-keygen -f id_rsa.pub -m pem -e > id_rsa.pub.pem

0 votes

Vous ne devez convertir que la clé privée, pas la clé publique.

22voto

Oztaco Points 123

Initialement, lors de l'utilisation de ssh-keygen, je pouvais générer une clé publique compatible avec AWS EC2, mais j'avais des problèmes pour créer des clés privées compatibles. Ce qui suit crée à la fois des paires de clés publiques et privées compatibles avec AWS EC2.

ssh-keygen -P "" -t rsa -b 4096 -m pem -f my-key-pair

Voici des infos sur chaque paramètre :

  • -P : est pour la phrase secrète. Délibérément défini comme vide.
  • -t : Spécifie le type de clé à créer. La paire de clés AWS EC2 nécessite RSA. D'après mon expérience, cela concerne la clé publique qui est créée.
  • -b : Spécifie le nombre de bits dans la clé. Les longueurs supportées sont 1024, 2048 et 4096. Si vous vous connectez en utilisant SSH tout en utilisant l'API Connect EC2 Instance, les longueurs supportées sont 2048 et 4096.
  • -m : Spécifie un format de clé pour la génération de clés. Définir un format "PEM" lors de la génération d'un type de clé privée pris en charge fera que la clé soit stockée dans le format de clé privée PEM hérité. La paire de clés AWS EC2 a besoin du format hérité.
  • -f : Spécifie le nom de fichier de sortie du fichier de clé

Ressources :

Pour plus d'informations sur ssh-keygen, consultez : https://man.openbsd.org/ssh-keygen.1

AWS - Paires de clés EC2 - https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html

0 votes

Mike a choisi de ne pas inclure de documentation pour l'option '-b'. Peut-être évident pour certains, cela signifie "cryptage sur 4096 bits s'il vous plaît". Comme indiqué dans le document AWS lié, "Les longueurs prises en charge sont 1024, 2048 et 4096. Si vous vous connectez en utilisant SSH tout en utilisant l'API Instance Connect EC2, les longueurs prises en charge sont de 2048 et 4096."

0 votes

@nclard, Pas sûr pourquoi j'ai omis ce paramètre -b. Je viens de l'ajouter.

11voto

id_rsa est le fichier que vous devez utiliser pour déchiffrer le mot de passe de l'instance EC2 Windows, mais assurez-vous simplement que le fichier que vous copiez-collez n'est pas protégé par une phrase.

J'ai résolu le problème en obtenant temporairement un fichier id_rsa non protégé avec quelque chose comme :

$ openssl rsa -in ~/.ssh/id_rsa -out tmp_file.pem

0voto

DuStorm Points 106

Lorsque vous lancez une instance EC2, vous lui attribuez une paire de clés (ou aucune). Elle ne peut pas être modifiée par la suite.

Seul le fichier .pem de cette paire de clés vous permettra de déchiffrer le mot de passe Windows.

Le fichier .pem aurait été téléchargé lors de la création de la paire de clés. Vous ne pouvez pas le récupérer. Si vous l'avez perdu, vous êtes malchanceux.

Vous ne pouvez pas utiliser un fichier .pem que vous avez généré vous-même à moins d'avoir importé cette clé dans AWS avant le lancement de l'instance et de l'avoir attribuée à l'instance.

En d'autres termes, si vous n'avez pas le fichier .pem original, vous ne pouvez pas obtenir le mot de passe.

Édition : après avoir relu la question, je réalise que l'OP avait importé sa clé dans AWS.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X