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.
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:
/dev/xvda1
volume (appelons le volume A) - voir ici/dev/xvdf
(ou /dev/sdf
)SSH sur la nouvelle micro-instance et montez le volume A sur /mnt/tmp
$ Sudo mount/dev/xvdf1/mnt/tmp
Copier ~/.ssh/authorized_keys
dans /mnt/tmp/home/ubuntu/.ssh/authorized_keys
/dev/xvda
.pem
C'est tout.
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.
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
Instruction du support AWS EC2:
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.
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.
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:
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.
C'est ça. Prendre plaisir :)
Si vous utilisez la plateforme ElasticBeanstalk, vous pouvez modifier les clés en allant:
Cela mettra fin à l'instance actuelle et en créera une avec les clés/paramètres choisis.
Je crois que l'approche la plus simple consiste à:
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
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 .
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.
Vous verrez vos anciennes clés dans ce fichier.
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é.
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.
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
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
Vous avez plusieurs options pour remplacer la clé de votre instance EC2.
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.
Systems Manager
Automation
sur le côté gauche. Execute Automation
AWSSupport-TroubleshootSSH
(généralement sur la dernière page)Vous pouvez trouver plus d'informations sur la Documentation officielle AWS
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.
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.