Vous ne pouvez pas appliquer une paire de clés à une instance en cours d'exécution. Vous ne pouvez utiliser la nouvelle paire de clés que pour lancer une nouvelle instance.
Pour la récupération, s'il s'agit d'une AMI de démarrage EBS, vous pouvez l'arrêter, faire un instantané du volume. Créez un nouveau volume en fonction de celui-ci. Et pouvoir la réutiliser pour démarrer l'ancienne instance, créer une nouvelle image ou récupérer des données.
Bien que les données du stockage éphémère soient perdues.
En raison de la popularité de cette question et réponse, je voulais capturer les informations dans le lien que Rodney a posté sur son commentaire.
Nous remercions Eric Hammond pour ces informations .
Correction des fichiers sur le volume EBS racine d'une instance EC2
Vous pouvez examiner et modifier des fichiers sur le volume EBS racine sur une instance EC2 même si vous vous trouvez dans ce que vous considérez comme une situation désastreuse comme:
- Vous avez perdu votre clé ssh ou oublié votre mot de passe
- Vous avez fait une erreur en modifiant le fichier / etc / sudoers et vous ne pouvez plus accéder à root avec sudo pour le corriger
- Votre instance longue durée est bloquée pour une raison quelconque, ne peut pas être contactée et ne démarre pas correctement
- Vous devez récupérer des fichiers hors de l'instance mais ne pouvez pas y accéder
Sur un ordinateur physique assis à votre bureau, vous pouvez simplement démarrer le système avec un CD ou une clé USB, monter le disque dur, extraire et réparer les fichiers, puis redémarrer l'ordinateur pour reprendre le travail.
Cependant, une instance EC2 distante semble distante et inaccessible lorsque vous êtes dans l'une de ces situations. Heureusement, AWS nous offre la puissance et la flexibilité nécessaires pour pouvoir récupérer un système comme celui-ci, à condition que nous exécutions des instances de démarrage EBS et non un magasin d'instances.
L'approche sur EC2 est quelque peu similaire à la solution physique, mais nous allons déplacer et monter le «disque dur» défectueux (volume EBS racine) sur une autre instance, le réparer, puis le reculer.
Dans certaines situations, il peut être plus simple de démarrer une nouvelle instance EC2 et de jeter la mauvaise, mais si vous voulez vraiment réparer vos fichiers, voici l'approche qui a fonctionné pour beaucoup:
Installer
Identifiez l'instance (A) et le volume d'origine contenant le volume EBS racine rompu avec les fichiers que vous souhaitez afficher et modifier.
instance_a=i-XXXXXXXX
volume=$(ec2-describe-instances $instance_a |
egrep '^BLOCKDEVICE./dev/sda1' | cut -f3)
Identifiez la deuxième instance EC2 (B) que vous utiliserez pour corriger les fichiers sur le volume EBS d'origine. Cette instance doit être exécutée dans la même zone de disponibilité que l'instance A afin qu'elle puisse être associée au volume EBS. Si aucune instance n'est déjà en cours d'exécution, démarrez-en une temporaire.
instance_b=i-YYYYYYYY
Arrêtez l'instance cassée A (en attendant qu'elle s'arrête complètement), détachez le volume EBS racine de l'instance (en attendant qu'il soit détaché), puis attachez le volume à l'instance B sur un périphérique inutilisé.
ec2-stop-instances $instance_a
ec2-detach-volume $volume
ec2-attach-volume --instance $instance_b --device /dev/sdj $volume
ssh pour l'instance B et montez le volume afin que vous puissiez accéder à son système de fichiers.
ssh ...instance b...
sudo mkdir -p 000 /vol-a
sudo mount /dev/sdj /vol-a
Répare le
À ce stade, l'intégralité de votre système de fichiers racine de l'instance A est disponible pour l'affichage et la modification sous / vol-a sur l'instance B. Par exemple, vous pouvez:
- Mettez les bonnes clés ssh dans /vol-a/home/ubuntu/.ssh/authorized_keys
- Modifier et corriger / vol-a / etc / sudoers
- Recherchez les messages d'erreur dans / vol-a / var / log / syslog
- Copiez les fichiers importants de / vol-a /…
Remarque: les UID des deux instances peuvent ne pas être identiques, alors faites attention si vous créez, modifiez ou copiez des fichiers appartenant à des utilisateurs non root. Par exemple, votre utilisateur mysql sur l'instance A peut avoir le même UID que votre utilisateur postfix sur l'instance B, ce qui pourrait causer des problèmes si vous montrez des fichiers avec un nom, puis ramenez le volume sur A.
Emballer
Une fois que vous avez terminé et que vous êtes satisfait des fichiers sous / vol-a, démontez le système de fichiers (toujours sur l'instance-B):
sudo umount /vol-a
sudo rmdir /vol-a
Maintenant, de retour sur votre système avec ec2-api-tools, continuez de déplacer le volume EBS vers son emplacement d'origine sur l'instance A d'origine et redémarrez l'instance:
ec2-detach-volume $volume
ec2-attach-volume --instance $instance_a --device /dev/sda1 $volume
ec2-start-instances $instance_a
J'espère que vous avez résolu le problème, l'instance A se présente très bien et vous pouvez accomplir ce que vous aviez initialement prévu de faire. Si ce n'est pas le cas, vous devrez peut-être continuer à répéter ces étapes jusqu'à ce qu'il fonctionne.
Remarque: Si vous aviez une adresse IP Elastic affectée à l'instance A lorsque vous l'avez arrêtée, vous devrez la réassocier après l'avoir redémarrée.
Rappelles toi! Si votre instance B a été temporairement démarrée juste pour ce processus, n'oubliez pas de la terminer maintenant.
ssh-add
devrait faire ce dont vous avez besoin.