Comment puis-je me connecter à mon instance Amazon EC2 alors que j’ai perdu ma paire de clés SSH après son lancement initial ?

Lecture de 5 minute(s)
0

Je souhaite me connecter à mon instance Amazon Elastic Compute Cloud (Amazon EC2). Cependant, j’ai perdu la paire de clés SSH.

Résolution

Important :

Les méthodes 1, 2 et 3 entraînent l’arrêt et le démarrage de l’instance. Soyez attentifs aux points suivants :

  • Si votre instance est sauvegardée par un stockage d’instances ou si elle contient des volumes de données, ces données sont perdues lorsque vous arrêtez l’instance. Pour en savoir plus, consultez Déterminer le type de périphérique racine de votre instance. Veillez à sauvegarder toutes les données que vous souhaitez conserver sur le volume de stockage d’instance.
  • Le processus d’arrêt et de redémarrage de l’instance modifie l’adresse IP publique de votre instance. Il est conseillé d’utiliser une adresse IP élastique plutôt qu’une adresse IP publique pour acheminer le trafic externe vers votre instance.

Méthode 1 : Entrer les données utilisateur

1.    Créez une nouvelle paire de clés.

2.    Si vous créez la clé privée dans la console Amazon EC2, récupérez la clé publique de la paire de clés.

3.    Ouvrez la console Amazon EC2.

4.    Arrêtez votre instance.

5.    Choisissez Actions, Paramètres d’instance, Modifier les données utilisateur.

6.    Copiez le script suivant dans la boîte de dialogue Modifier les données utilisateur :

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:
- [users-groups, once]
users:
  - name: username
    ssh-authorized-keys:
    - PublicKeypair

Remplacez nom d’utilisateur par votre nom d’utilisateur, tel que ec2-user. Vous pouvez entrer le nom d’utilisateur par défaut ou un nom d’utilisateur personnalisé, si un nom a déjà été défini pour l’instance. Pour obtenir la liste des noms d’utilisateur par défaut, consultez Obtenir des informations sur votre instance.

Remplacez PublicKeypair par la clé publique récupérée à l’étape 2. Veillez à saisir la totalité de la clé publique, en commençant par ssh-rsa.

7.    Choisissez Enregistrer.

8.    Démarrez votre instance.

9.    Une fois la phase cloud-init terminée, vérifiez que la clé publique a été remplacée.

Important : étant donné que le script contient une paire de clés, supprimez le script du champ Données utilisateur.

10.    Arrêtez votre instance.

11.    Choisissez Actions, Paramètres d’instance, Modifier les données utilisateur.

12.    Supprimez tout le texte de la boîte de dialogue Modifier les données utilisateur, puis choisissez Enregistrer.

13.    Démarrez votre instance.

Méthode 2 : Utiliser AWS Systems Manager

Si votre instance est une instance gérée dans AWS Systems Manager, utilisez le document AWSSupport-ResetAccess pour récupérer votre paire de clés perdue. AWSSupportResetAccess génère et ajoute automatiquement une nouvelle paire de clés SSH (Publique/Privée) à l’aide de l’outil EC2 Rescue pour Linux sur l’instance EC2 spécifiée.

La nouvelle clé privée SSH de votre instance est chiffrée et enregistrée dans Magasin de paramètres, une fonctionnalité d’AWS Systems Manager. Le nom du paramètre est /ec2rl/openssh/instance_id/key.

Utilisez la commande suivante pour récupérer la clé SSH privée depuis le magasin de paramètres :

$ aws ssm get-parameters --names "/ec2rl/openssh/instance_id/key" --with-decryption --output json --query  "Parameters[0].Value" | sed 's:\\n:\n:g; s:^"::; s:"$::' >  key-pair-name

Remarque : veillez à remplacer instance_id par votre ID d’instance. Remplacez également key-pair-name par le nom de votre paire de clés.

Créez ensuite un nouveau fichier .pem avec la valeur de ce paramètre comme contenu. Ensuite, utilisez-le pour vous reconnecter à votre instance inaccessible. Utilisez la commande suivante pour convertir la clé privée en fichier .pem :

$ ssh-keygen -f key-pair-name -e -m pem > key-pair-name.pem

Remarque : assurez-vous de remplacer key-pair-name par le nom de votre paire de clés.

Le flux de travail d’automatisation crée une Amazon Machine Image (AMI) activée par mot de passe. La nouvelle AMI n’est pas automatiquement supprimée. Elle reste dans votre compte.

Pour trouver ces AMI :

1.    Ouvrez la console Amazon EC2, puis choisissez AMI.

2.    Saisissez l’ID d’exécution d’automatisation dans le champ de recherche.

Méthode 3 : Utiliser Amazon EC2 Instance Connect

Si votre instance est Amazon Linux 2 2.0.20190618 ou une version ultérieure, y compris Amazon Linux 2023, vous pouvez utiliser EC2 Instance Connect pour vous connecter à l’instance.

Méthode 4 : Utiliser EC2 Serial Console

Si vous avez activé EC2 Serial Console pour Linux, vous pouvez l’utiliser pour résoudre les problèmes liés aux types d’instance basés sur Nitro. La console de série permet de résoudre les problèmes de démarrage, ainsi que de configuration réseau et SSH. La console de série se connecte à votre instance sans qu’aucune connexion réseau ne soit nécessaire. Vous pouvez accéder à la console de série à l’aide de la console Amazon EC2 ou de l’interface de la ligne de commande AWS (AWS CLI).

Avant d’utiliser la console série, autorisez l’accès à cette console au niveau du compte. Créez ensuite des politiques AWS Identity and Access Management (IAM) accordant l’accès à vos utilisateurs IAM. De plus, chaque instance utilisant la console série doit comprendre au moins un utilisateur avec mot de passe. Si votre instance n’est pas accessible et que vous n’avez pas configuré l’accès à la console de série, suivez les instructions des méthodes 1, 2 ou 3. Pour plus d’informations sur la configuration d’EC2 Serial Console pour Linux, consultez Configurer l’accès à EC2 Serial Console.

Remarque : si vous constatez des erreurs lors de l’exécution de commandes AWS CLI, assurez-vous que vous utilisez bien la version la plus récente de l’AWS CLI.

Informations connexes

Exécuter des commandes sur votre instance Linux au lancement

AWS Systems Manager Automation

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans