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

33

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

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

Maintenant, j'ai créé une instance Windows et pour déchiffrer ce mot de passe d'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?

gsi-frank
la source
2
La clé privée est déjà au format PEM et peut être utilisée telle quelle.
Michael Hampton
@MichaelHampton, cela dépendra de la version de ssh-keygen et de la commande utilisée pour générer la paire de clés. Certaines versions utilisent RFC4716 par défaut, au lieu de PEM.
austinian

Réponses:

44

Selon cela , cette commande peut être utilisée:

ssh-keygen -f id_rsa -e -m pem

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

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

fuero
la source
Mais ils n'ont pas besoin de la clé publique, n'est-ce pas? Ils ont besoin de la clé privée pour déchiffrer leur mot de passe à partir de la console AWS
Michael Bailey
Je n'ai aucune idée de ce dont OP a besoin.
fuero
Vous ne savez pas à quel point vous êtes familiarisé avec AWS, mais lorsque vous lancez une instance Windows (essentiellement un serveur), AWS vous garde le mot de passe 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 deux de clés privées.
Michael Bailey
1
Cela ne fonctionne pas sur OS X (ssh -v ==> OpenSSH_6.2p2)
chrish
3
contrairement à la documentation, il sortira la clé PUBLIQUE au format PEM, pas la privée. actuellement ssh-keygen ne prend pas en charge la conversion de clés privées.
morgwai
21

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

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

Ensuite, copiez simplement la .pemclé si nécessaire.

Pour référence:

  • la -f id_rsa.pubpartie indique le fichier d'entrée à lire
  • -m 'PEM indique un type de fichier PEM
  • l' -eoption indique que la sortie sera exportée
Mat
la source
5

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

J'ai résolu le problème d'obtention d'un id_rsafichier temporairement non protégé avec quelque chose comme:

$ openssl rsa -in ~/.ssh/id_rsa -out tmp_file.pem
gsi-frank
la source
2

Initialement, lors de l'utilisation ssh-keygen, j'ai pu générer une clé publique compatible avec AWS EC2, mais j'ai eu des problèmes avec la création de clés privées compatibles. Les éléments suivants créent 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 informations sur chaque paramètre:

  • -P: correspond à la phrase secrète. Défini intentionnellement sur 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 créée.
  • -b: spécifie le nombre de bits dans la clé. Les longueurs prises en charge sont 1024, 2048 et 4096. Si vous vous connectez à l'aide de SSH tout en utilisant l'API EC2 Instance Connect, les longueurs prises en charge sont 2048 et 4096.
  • -m: spécifie un format de clé pour la génération de clés. La définition d'un format «PEM» lors de la génération d'un type de clé privée pris en charge entraînera le stockage de la clé dans le format de clé privée PEM hérité. La paire de clés AWS EC2 nécessite le format hérité
  • -f: spécifie le nom du fichier de sortie du fichier de clé

Ressources:

Pour plus d'informations sur ssh-keygen, voir:  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

Mike Barlow - BarDev
la source
Mike a choisi de ne pas inclure de documentation pour l'option '-b'. Peut-être évident pour certains, cela signifie "chiffrement 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 à l'aide de SSH tout en utilisant l'API EC2 Instance Connect, les longueurs prises en charge sont 2048 et 4096."
nclark
@nclard, Je ne sais pas pourquoi j'ai laissé ce paramètre -b. Je viens de l'ajouter.
Mike Barlow - BarDev
0

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

Ce n'est qu'en utilisant ce fichier .pem de cette paire de clés que vous pourrez décrypter 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 plus l'obtenir. Si vous l'avez perdu, vous n'avez pas de chance.

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'affecter à l'instance.

Autrement dit, si vous n'avez pas le fichier .pem d'origine, vous ne pouvez pas obtenir le mot de passe.

Edit: après avoir relu la question, je me rends compte que l'OP avait importé sa clé dans AWS.

Matt Houser
la source