Comment télécharger la clé publique d'Amazon AWS?

J'ai une instance linux amazon ec2 courante associée à un couple de clés (p1) et j'ai téléchargé la clé privée sur mon bureau domestique. Maintenant, au travail, j'ai créé un keypair (p2) sur mon bureau de travail et j'ai importé la clé publique vers Amazon via la console AWS.

À la maison, je souhaite ajouter la clé publique de keypair p2 pour être ajoutée à authorized_keys de mon instance AMI (que je peux actuellement accéder uniquement à partir de la maison). Cependant, j'ai oublié d'apporter la clé publique de p2 avec moi, de sorte qu'il est possible d'exporter cette clé publique par Amazon.

4 Solutions collect form web for “Comment télécharger la clé publique d'Amazon AWS?”

Bon puzzle, merci! Voici une réponse:

  1. Démarrez une nouvelle instance temporaire EBS boot t1.micro, une instance A, spécifiant keypair p2. Spécifiez une zone de disponibilité où vous avez une autre instance B déjà en cours d'exécution et à laquelle vous avez accès. (Commencez un temporaire si nécessaire).

  2. Arrêtez (ne résistez pas) à l'instance A après avoir été en cours d'exécution pendant quelques minutes, de sorte qu'il est possible d'enregistrer la clé publique dans son fichier authorized_keys.

  3. Détachez le volume EBS racine de l'instance arrêtée. Attachez-le et montez-le dans votre instance en cours d'exécution B.

  4. Copiez la clé publique à partir du système de fichiers monté.

  5. Détachez et supprimez le volume EBS. Terminer l'instance temporaire A.

La commande ssh-keygen correcte est cependant:

 ssh-keygen -y -f /path/to/privatekey > /path/to/publickey 

J'ai déjà fourni une réponse qui utilise les volumes EBS pour accéder à la clé publique ssh, mais voici une autre façon d'y parvenir en démarrant une instance EC2 temporaire avec un script de données utilisateur qui envoie la clé publique à la sortie de la console. Voici les étapes suivantes:

Enregistrez le code suivant dans un fichier nommé output-ssh-key.userdata sur votre ordinateur local. NE FONCTIONNE PAS CES COMMANDES LOCALEMENT!

 #!/bin/bash -ex exec> >(tee /var/log/user-data.log|logger -t user -s 2>/dev/console) 2>&1 adminkey=$(GET instance-data/latest/meta-data/public-keys/ | perl -ne 'print $1 if /^0=[^a-z0-9]*([-.@\w]*)/i') cat <<EOF SSHKEY:======================================================================== SSHKEY:HERE IS YOUR PUBLIC SSH KEY FOR KEYPAIR "$adminkey": SSHKEY:$(cat /home/ubuntu/.ssh/authorized_keys) SSHKEY:======================================================================== SSHKEY:Halting in 50min ($(date --date='+50 minutes' +"%Y-%m-%d %H:%M UTC")) EOF sleep 3000 halt 

Exécutez une instance stock Ubuntu 10.04 LTS avec le fichier ci-dessus en tant que script utilisateur-données. Spécifiez le couple de clés pour lequel vous souhaitez récupérer la clé publique ssh:

 ec2-run-instances \ --key YOURKEYPAIRHERE \ --instance-type t1.micro \ --instance-initiated-shutdown-behavior terminate \ --user-data-file output-ssh-key.userdata \ ami-ab36fbc2 

Continuez à demander la sortie de la console de l'instance jusqu'à ce qu'elle affiche votre clé publique ssh. Spécifiez l'identifiant d'instance renvoyé de la commande run-instances:

 ec2-get-console-output YOURINSTANCEID | grep SSHKEY: | cut -f3- -d: 

Dans les 2 à 10 minutes, vous obtiendrez une sortie comme ceci:

 ======================================================================== HERE IS YOUR PUBLIC SSH KEY FOR KEYPAIR "erich": ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6rn8cl41CkzaH4ZBhczOJZaR4xBBDI1Kelc2ivzVvCB THcdJRWpDd5I5hY5W9qke9Tm4fH3KaUVndlcP0ORGvS3PAL4lTpkS4D4goMEFrwMO8BG0NoE8sf2U/7g aUkdcrDC7jzKYdwleRCI3uibNXiSdeG6RotClAAp7pMflDVp5WjjECDZ+8Jzs2wasdTwQYPhiWSiNcfb fS97QdtROf0AcoPWElZAgmabaDFBlvvzcqxQRjNp/zbpkFHZBSKp+Sm4+WsRuLu6TDe9lb2Ps0xvBp1F THlJRUVKP2yeZbVioKnOsXcjLfoJ9TEL7EMnPYinBMIE3kAYw3FzZZFeX3Q== erich ======================================================================== Halting in 50min (2011-12-20 05:58 UTC) 

L'instance temporaire se terminera automatiquement en moins d'une heure, mais vous pouvez la terminer vous-même si vous souhaitez vous assurer que vous n'êtes pas facturé plus que les deux centimes, cela coûtera à courir.

Si vous avez la clé SSH privée, vous pouvez générer de nouveau le composant clé publique en exécutant simplement la commande ssh-keygen suivante :

  ssh-keygen -i -f /path/to/private-key > /path/to/public-key 

Tout cela est simple … La console AWS et l'API ne supporte pas la poussée de 2 battements de clé lors du démarrage d'une instance EC2. Il s'agit d'un exercice laissé à l'administrateur système par d'autres moyens.

Si vous avez accès à la clé d'identité déjà autorisée, vous pouvez simplement exécuter la commande ssh-copy-id suivante :

  ssh-copy-id -i /path/to/public-key user@EC2-instance 

Cela copiera la clé publique donnée sur le serveur et dans le fichier ~user/.ssh/authorized_keys automatiquement pour vous et assurez-vous des autorisations appropriées sur le fichier.

La façon la plus élégante serait d'inclure les clés d'identité supplémentaires dans vos processus de gestion de configuration. Dans mon cas, cela implique d'ajouter les clés supplémentaires à la configuration de Marionnettes pour le nœud.

Comme une note latérale, la préférence personnelle, mais utiliserait une meilleure méthode de gestion des clés SSH que de simplement inclure des clés distinctes pour le travail et l'emplacement de la maison. Comme je l'ai mentionné dans une question précédente, je maintiens mes clés sur un lecteur USB que je garde avec moi plutôt que sur n'importe quel ordinateur que j'utilise.

  • Impossible de se connecter à mon AWS EC2
  • Base de données MySQL de plus de 1 To sur Amazon
  • Elastic Load Balancer pour plusieurs applications web
  • Limiter l'input vers un VPC-ELB face à Internet uniquement dans les instances d'un autre count AWS
  • Amazon EC2 VNC Nvidia GPU utilisation?
  • Erreur lors de la création EC2 Dynamic Inventory dans Ansible
  • AWS Key Management Service Durabilité?
  • Le server AWS EC2 a refusé la connection - Non remplacé remplacé autorisé - ne peut toujours pas se connecter
  • Quelle est la façon la plus simple d'append une list d'adresses IP AWS à IIS 7.5 interdire la list?
  • comment append un sous-domaine en utilisant route53 et godaddy
  • Amazon EC2 et RDS ont-ils une memory ECC?
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.