web-dev-qa-db-fra.com

Changer la paire de clés pour l'instance ec2

Comment changer la paire de clés pour mon instance ec2 dans AWS Management Console? Je peux arrêter l'instance, je peux créer une nouvelle paire de clés, mais je ne vois aucun lien pour modifier la paire de clés de l'instance.

322
Michael Chen

Faites ceci: https://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#replacing-lost-key-pair

Voici ce que j'ai fait, grâce au blog d'Eric Hammond:

  1. Arrêtez l'instance EC2 en cours d'exécution
  2. Détachez son /dev/xvda1 volume (appelons le volume A) - voir ici
  3. Démarrer une nouvelle instance t1.micro EC2 en utilisant ma nouvelle paire de clés. Assurez-vous de le créer dans le même sous-réseau, sinon vous devrez mettre fin à l'instance et la recréer. - vois ici
  4. Joignez le volume A à la nouvelle instance micro, sous la forme /dev/xvdf (ou /dev/sdf)
  5. SSH sur la nouvelle micro-instance et montez le volume A sur /mnt/tmp

    $ Sudo mount/dev/xvdf1/mnt/tmp

  6. Copier ~/.ssh/authorized_keys dans /mnt/tmp/home/ubuntu/.ssh/authorized_keys

  7. Connectez - Out
  8. Terminer l'instance micro
  9. Détachez le volume A de celui-ci
  10. Rattachez le volume A à l'instance principale en tant que /dev/xvda
  11. Démarrer l'instance principale
  12. Connectez-vous comme avant, en utilisant votre nouveau fichier .pem

C'est tout.

411
yegor256

Une fois qu'une instance a été démarrée, il n'y a aucun moyen de modifier la paire de clés associée à l'instance au niveau des métadonnées, mais vous pouvez modifier la clé ssh que vous utilisez pour vous connecter à l'instance.

Il existe un processus de démarrage sur la plupart des AMI qui télécharge la clé publique ssh et l'installe dans un fichier .ssh/registered_keys afin que vous puissiez y entrer en tant qu'utilisateur utilisant la clé privée ssh correspondante.

Si vous souhaitez modifier la clé ssh que vous utilisez pour accéder à une instance, vous devez modifier le fichier allowed_keys sur l'instance elle-même et convertir celle-ci en votre nouvelle clé publique ssh.

Le fichier allowed_keys se trouve dans le sous-répertoire .ssh, dans le répertoire de base de l'utilisateur sous lequel vous vous connectez. En fonction de l'AMI que vous utilisez, il peut s'agir de:

/home/ec2-user/.ssh/authorized_keys
/home/ubuntu/.ssh/authorized_keys
/root/.ssh/authorized_keys

Après avoir édité un fichier allowed_keys, utilisez toujours un terminal different pour confirmer que vous êtes en mesure de connecter SSH à l'instance avant de vous déconnecter de la session utilisée pour éditer le fichier. Vous ne voulez pas commettre d'erreur et vous verrouiller complètement hors de l'instance.

Lorsque vous pensez aux paires de clés ssh sur EC2, je vous recommande de télécharger votre clé publique ssh personnelle sur EC2 au lieu de demander à Amazon de générer la paire de clés à votre place.

Voici un article que j'ai écrit à ce sujet:

Téléchargement de clés SSH personnelles vers Amazon EC2
http://alestic.com/2010/10/ec2-ssh-keys

Cela ne s'appliquerait qu'aux nouvelles instances que vous exécutez.

163
Eric Hammond

Exécutez cette commande après avoir téléchargé votre pem AWS. 

ssh-keygen -f YOURKEY.pem -y

Puis videz la sortie dans authorized_keys.

Ou copiez le fichier pem sur votre instance AWS et exécutez les commandes suivantes

chmod 600 YOURKEY.pem

et alors

ssh-keygen -f YOURKEY.pem -y >> ~/.ssh/authorized_keys
67
Pat Mcb

Instruction du support AWS EC2:

  1. Changer le login pem
  2. allez sur votre console EC2
  3. Sous NETWORK & SECURITY, cliquez sur Key Pair. Cliquez sur Create Key Pair.
  4. Donnez un nom à votre nouvelle paire de clés, enregistrez le fichier .pem. Le nom de la paire de clés .__ sera utilisé pour vous connecter à votre instance.
  5. Créez une connexion SSH avec votre instance et gardez-la ouverte
  6. dans PuttyGen, cliquez sur "Charger" pour charger votre fichier .pem
  7. Conservez le bouton radio SSH-2 RSA coché. Cliquez sur "Enregistrer la clé privée" Vous obtiendrez un avertissement fenêtre, cliquez sur "Oui"
  8. cliquez également sur "Enregistrer la clé publique" afin de générer la clé publique . Il s'agit de la clé publique que nous allons copier dans votre instance courante
  9. Enregistrez la clé publique avec le nouveau nom de la paire de clés et avec l'extension pub
  10. Ouvrir le contenu de la clé publique dans un bloc-notes
  11. copier le contenu ci-dessous "Commentaire:" imports-openssh-key "et avant " ---- END SSH2 PUBLIC KEY ----
    Remarque - vous devez copier le contenu. comme une ligne - supprime toutes les nouvelles lignes
  12. sur votre instance connectée, ouvrez votre fichier allowed_keys à l'aide de l'outil vi. Exécutez la commande suivante: vi .ssh/registered_keys Vous devriez également voir la clé publique d'origine dans le fichier.
  13. déplacez votre curseur sur le fichier à la fin de votre première clé publique content: type "i" pour l'insertion
  14. sur la nouvelle ligne, tapez "ssh-rsa" et ajoutez un espace avant de coller le contenu de la clé publique, l'espace et le nom du fichier .pem fichier (sans le .pem) Remarque - vous devriez obtenir une ligne avec le même format que la ligne précédente
  15. appuyez sur la touche Échap, puis tapez: wq!

cela permettra d'économiser le fichier allowed_keys mis à jour

maintenant, essayez d'ouvrir une nouvelle session SSH sur votre instance en utilisant votre nouvelle clé pai

Une fois que vous avez confirmé que vous êtes capable de SSH dans l’instance à l’aide de la nouvelle paire de clés, vous pouvez utiliser vi .ssh/registered_key et supprimer l’ancienne clé.

Réponse à la remarque de Shaggie:

Si vous ne pouvez pas vous connecter à l'instance (la clé est corrompue, par exemple), utilisez la console AWS pour détacher le volume ( http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/ebs-detaching-volume .html ) et rattachez-le à l'instance active, puis modifiez la clé du volume et rattachez-la à l'instance précédente.

46
Elia Weiss

J'ai remarqué que lorsque vous êtes géré par Elastic Beanstalk, vous pouvez changer votre paire de clés EC2 active. Sous Elastic Beanstalk> Configuration> Sécurité, choisissez la nouvelle clé dans la liste déroulante EC2 . Vous verrez ce message vous demander si vous êtes sûr:

EC2KeyName: les modifications apportées aux paramètres de l'option EC2KeyName ne prendront effet immédiatement. Chacune de vos instances EC2 existantes sera remplacée et vos nouveaux paramètres prendront alors effet.

Mon instance était déjà terminée lorsque j'ai fait cela. Il a ensuite commencé, s'est terminé et a recommencé. Apparemment, "remplacer" signifie terminer et créer une nouvelle instance. Si vous avez modifié votre volume de démarrage, créez d'abord une AMI, puis spécifiez cette AMI dans le même formulaire Elastic Beanstalk> Configuration> Instances en tant que ID AMI personnalisé . Cela vous avertit également du remplacement des instances EC2.

Une fois que vous avez modifié votre paire de clés EC2 et votre identifiant AMI personnalisé, et après avoir reçu des avertissements les concernant, cliquez sur Enregistrer pour continuer.

N'oubliez pas que l'adresse IP change lorsque l'instance est recréée. Vous devez donc extraire une nouvelle adresse IP de la console EC2 à utiliser lors d'une connexion via SSH.

33
Mark Berry

J'ai suivi cette approche et, après un certain temps, j'ai réussi à la faire fonctionner. Le manque de commandes réelles rendait la tâche difficile, mais je l'ai compris. CEPENDANT - une approche beaucoup plus simple a été trouvée et testée peu de temps après: 

  1. Enregistrez votre instance en tant que AMI (redémarrez ou pas, je suggère de redémarrer). Cela ne fonctionnera que si EBS est soutenu. 
  2. Ensuite, démarrez simplement une instance à partir de cette AMI et affectez votre nouveau fichier de clés. 
  3. Déplacez votre adresse IP élastique (le cas échéant) vers votre nouvelle instance et vous avez terminé. 
27
OldGreg

Si les étapes ci-dessous sont suivies, il va gagner beaucoup de temps et il ne sera pas nécessaire d'arrêter l'instance en cours d'exécution.

  1. Démarrez une nouvelle instance t1.micro EC2 en utilisant une nouvelle paire de clés. Assurez-vous de le créer dans le même sous-réseau}, sinon vous devrez mettre fin à l'instance et la recréer.
  2. SSH sur la nouvelle micro-instance et copiez le contenu de ~/.ssh/allowed_keys quelque part sur votre ordinateur.
  3. Connectez-vous à l'instance principale avec ancienne clé ssh.
  4. Copiez et remplacez le contenu du fichier de point 2 à ~/.ssh/registered_keys
  5. Maintenant, vous pouvez vous reconnecter uniquement avec une nouvelle clé. L'ancienne clé ne fonctionnera plus. 

C'est ça. Prendre plaisir :)

13
vinay saini

Si vous utilisez la plateforme ElasticBeanstalk, vous pouvez modifier les clés en allant:

  • Panneau élastique de haricot
  • Configuration
  • Instances (cog en haut à droite)
  • Paire de clés EC2

Cela mettra fin à l'instance actuelle et en créera une avec les clés/paramètres choisis.

8
Vaelyr

Je crois que l'approche la plus simple consiste à:

  1. Lancez une nouvelle instance EC2 en utilisant une image AMI (à partir de l'étape 1) avec une nouvelle paire de clés.
  2. Connectez-vous à la nouvelle instance EC2 avec une nouvelle clé.
  3. Login to new EC2 instance with new key.
5
Sergey

La solution la plus simple consiste à copier le contenu de

~/.ssh/id_rsa.pub

dans les allowed_keys de votre instance AWS à

~/.ssh/authorized_keys

Cela vous permettra de ssh dans l'instance EC2 sans spécifier de fichier pem pour la commande ssh. Vous pouvez supprimer toutes les autres clés une fois que vous avez testé votre connexion.

Si vous avez besoin de créer une nouvelle clé pour la partager avec quelqu'un d'autre, vous pouvez le faire avec:

ssh-keygen -t rsa

qui créera le fichier private key.pem, et vous pourrez en obtenir la clé publique avec:

ssh-keygen -f private_key.pem -y > public_key.pub

Toute personne ayant private_key.pem pourra se connecter avec

ssh [email protected] -i private_key.pem
4
snez

Vous n'avez pas besoin de faire pivoter le périphérique racine et de changer la clé publique SSH dans authorized_keys. Car cela peut utiliser userdata pour ajouter vos clés ssh à n’importe quelle instance. Pour cela, vous devez d'abord créer un nouveau KeyPair à l'aide de la console AWS ou via ssh-keygen.

ssh-keygen -f YOURKEY.pem -y

Cela générera une clé publique pour votre nouveau SSH KeyPair, copiera cette clé publique et l’utilisera dans le script ci-dessous.

Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0

--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [scripts-user, always]

--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"

#!/bin/bash
/bin/echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6xigPPA/BAjDPJFflqNuJt5QY5IBeBwkVoow/uBJ8Rorke/GT4KMHJ3Ap2HjsvjYrkQaKANFDfqrizCmb5PfAovUjojvU1M8jYcjkwPG6hIcAXrD5yXdNcZkE7hGK4qf2BRY57E3s25Ay3zKjvdMaTplbJ4yfM0UAccmhKw/SmH0osFhkvQp/wVDzo0PyLErnuLQ5UoMAIYI6TUpOjmTOX9OI/k/zUHOKjHNJ1cFBdpnLTLdsUbvIJbmJ6oxjSrOSTuc5mk7M8HHOJQ9JITGb5LvJgJ9Bcd8gayTXo58BukbkwAX7WsqCmac4OXMNoMOpZ1Cj6BVOOjhluOgYZbLr" >> /home/hardeep/.ssh/authorized_keys
--//

Après le redémarrage, la clé de publication SSH spécifiée sera installée sur la machine. Supprimez les données utilisateur après le premier redémarrage. En savoir plus sur serdata on startup .

3
Hardeep Singh

J'ai essayé ci-dessous les étapes et cela a fonctionné sans arrêter l'instance. Mon exigence était - comme j'ai changé ma machine cliente, l'ancien fichier .pem ne me permettait pas de me connecter à l'instance ec2. 

  1. Connectez-vous à l'instance ec2 à l'aide de votre ancien fichier .pem de l'ancien ordinateur. Ouvrez ~/.ssh/registered_keys 

Vous verrez vos anciennes clés dans ce fichier.

  1. ssh-keygen -f YOUR_PEM_FILE.pem -yIl générera une clé. Ajoutez la clé à ~/.ssh/registered_keys ouverte à l’étape 1. Pas besoin de supprimer l'ancienne clé.

  2. Depuis la console AWS, créez une nouvelle paire de clés. Rangez-le dans votre nouvelle machine. Renommez-le en ancien fichier PEM - la raison est que l'ancien fichier PEM est toujours associé à l'instance ec2 dans AWS. 

Terminé.

Je peux me connecter à AWS ec2 à partir de mon nouvel ordinateur client.

2
Mr. Bordoloi

La réponse de Yegor256 a fonctionné pour moi, mais j'ai pensé ajouter quelques commentaires pour aider ceux qui ne sont pas aussi doués pour monter des disques (comme moi!):

Amazon vous donne le choix du nom que vous souhaitez attribuer au volume lorsque vous l'attachez. Vous avez utilisé un nom dans la plage de/dev/sda - /dev/sdp Les versions les plus récentes d’Ubuntu renommeront alors ce que vous avez mis dans/dev/xvd (x) ou quelque chose du genre. 

Donc, pour moi, j'ai choisi/dev/sdp comme nom du nom de montage dans AWS, puis je me suis connecté au serveur et j'ai découvert qu'Ubuntu avait renommé mon volume en/dev/xvdp1). Je devais ensuite monter le lecteur - pour moi, je devais le faire comme ceci:

mount -t ext4 xvdp1 /mnt/tmp

Après avoir parcouru tous ces obstacles, je pouvais accéder à mes fichiers sur/mnt/tmp

1
Ryan

Mon problème était, j'ai essayé avec IP plutôt que public DNS. Puis j'ai essayé avec public DNS et son résolu

0
vipin cp

Vous avez plusieurs options pour remplacer la clé de votre instance EC2. 

  1. Vous pouvez remplacer la clé manuellement dans le fichier .ssh/registered_keys. Toutefois, cela nécessite que vous ayez réellement accès à l'instance ou au volume si celui-ci n'est pas chiffré.
  2. Vous pouvez utiliser AWS Systems Manager. Cela nécessite l'installation d'un agent.

Comme la première option se trouve facilement dans les réponses ou dans le moteur de recherche de votre choix, je souhaite me concentrer sur le Gestionnaire de systèmes.

  1. Ouvrez le service Systems Manager
  2. Cliquez sur Automation sur le côté gauche. 
  3. Cliquez sur Execute Automation 
  4. Sélectionnez AWSSupport-TroubleshootSSH (généralement sur la dernière page)

Vous pouvez trouver plus d'informations sur la Documentation officielle AWS

0
Hendric

si vous ne parvenez pas à vous connecter à VM et supprimez la clé ssh, vous pouvez également modifier la paire de clés de votre ec2 en procédant comme suit. Allez pas à pas 1) arrêtez votre instance ec2. 2) prenez un instantané de VM et de stockage. 3) créer un nouveau VM tout en le créant, sélectionnez votre instantané et créez VM à partir de votre instantané. 4) tandis que la création de VM télécharge votre paire de clés. 5) une fois que votre VM UP, vous pouvez ssh avec une nouvelle paire de clés et vos données seront également sauvegardées.

0

Cela ne fonctionnera que si vous avez accès à l'instance que vous souhaitez modifier/ajouter la clé. Vous pouvez créer une nouvelle paire de clés. Ou si vous avez déjà la paire de clés, vous pouvez alors coller la clé publique de la nouvelle paire dans le fichier allowed_keys sur votre instance.

vim .ssh/registered_keys

Vous pouvez maintenant utiliser la clé privée pour cette paire et vous connecter.

J'espère que cela t'aides.

0
skd