web-dev-qa-db-fra.com

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 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?

40
canciobello

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

ssh-keygen -f id_rsa -e -m pem

Cela convertira votre clé public 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 si AWS ne demande pas un (X.509) certificat au format PEM, ce qui serait différent de vos clés SSH.

53
fuero

En utilisant ssh-keygen pour 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 le .pem touche si nécessaire.

Pour référence:

  • le -f id_rsa.pub partie indique le fichier d'entrée à lire
  • -m 'PEM indique un type de fichier PEM
  • le -e option indique que la sortie sera exportée
27
Matt

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 de protection temporaire du id_rsa fichier avec quelque chose comme:

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

Initialement, lorsque vous utilisez 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

4

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, sauf si vous avez importé cette clé dans AWS avant le lancement de l'instance et que vous l'avez affectée à 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.

0
Matt Houser