Comment puis-je accéder à l’EC2 Serial Console d'une instance Linux injoignable ou inaccessible ?

Lecture de 8 minute(s)
0

Mon instance Linux Amazon Elastic Compute Cloud (Amazon EC2) est injoignable ou inaccessible. De plus, je n'ai pas configuré l'accès à l’EC2 Serial Console au niveau du système d'exploitation.

Brève description

Cet article s'applique aux systèmes d'exploitation (OS) Linux suivants :

  • Red Hat 7 - 9
  • Amazon Linux 2, 2023
  • CentOS 7, 8
  • Rocky Linux 8, 9
  • Ubuntu 16 - 24
  • Debian 9 - 12

Prérequis : Pour utiliser la console série, assurez-vous que tous les prérequis sont remplis. Notez que l'étape de définition d'un mot de passe utilisateur du système d'exploitation doit être terminée une fois que vous avez accédé au volume racine de l'instance.

Résolution

Pour configurer l'accès à la console série, les étapes suivantes doivent être effectuées.

Remarque : Si votre console série EC2 fonctionne correctement et que vous n'avez qu'à définir le mot de passe de l'utilisateur de votre système d'exploitation, effectuez uniquement cette étape de résolution. Pour vérifier que la console série EC2 fonctionne, consultez la section Connexion à la console série EC2.

Accéder au volume racine de l'instance

Pour accéder au volume racine de l'instance, lancez une instance temporaire. Puis, remontez votre volume Amazon Elastic Block Store (Amazon EBS) sur l'instance de secours. Puis, à partir l'instance de secours, vérifiez et modifiez les paramètres GRUB de la console série. Vous pouvez également définir le mot de passe de l'utilisateur racine ou de l'utilisateur du système d'exploitation et autoriser l'accès racine au démon SSH .

Important : Lorsque vous configurez une instance temporaire, tenez compte des points suivants :

Attacher le disque racine à une instance de secours

Procédez comme suit :

  1. Créez une nouvelle paire de clés ou utilisez une paire de clés existante.

  2. Obtenez l'ID de volume et le nom du périphérique pour le volume racine de l'instance d'origine.

  3. Démarrez l'instance d'origine.

  4. Lancez une instance temporaire à partir d'une Amazon Machine Image (AMI) avec la même version du système d'exploitation Linux dans la même zone de disponibilité.

  5. Détachez le volume racine de l'instance d'origineet attachez-le à l'instance temporaire en tant que volume secondaire. Notez le nom du périphérique de volume.

  6. Connectez-vous à l'instance temporaire à l'aide de votre paire de clés SSH.

  7. Utilisez la commande suivante pour passer à l’utilisateur racine :

    [ec2-user ~]$ sudo su
  8. Pour identifier le nom et la partition du périphérique de stockage en mode bloc, exécutez la commande suivante depuis l'instance temporaire :

    [root ~]$ lsblk
    NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    xvda    202:0    0    8G  0 disk
    └─xvda1 202:1    0    8G  0 part /
    xvdf    202:80   0  101G  0 disk
    └─xvdf1 202:81   0  101G  0 part

    L'exemple précédent utilise une instance XEN avec des pilotes blockfront. Les noms du périphérique de volume /dev/xvda et /dev/xvdf sont des volumes partitionnés, et /dev/xvdg ne l'est pas. Si votre volume est partitionné, exécutez la commande suivante pour monter la partition (/dev/xvdf1) au lieu du périphérique brut (/dev/xvdf) :

    [root ~]$ mount -o nouuid /dev/xvdf1 /mnt

    Si vous utilisez une instance basée sur Nitro, le nom du périphérique de volume ressemble à /dev/nvme[0-26]n1. Si votre instance est créée sur Nitro avec NVMe, montez la partition dans le répertoire /mnt. Utilisez le nom de périphérique que vous avez identifié précédemment pour exécuter la commande suivante :

    [root ~]$ mount -o nouuid  /dev/nvme1n1p1 /mnt

    Pour plus d'informations, consultez la section Noms des appareils pour les volumes sur les instances Amazon EC2.

  9. Pour créer un environnement chroot dans le répertoire /mnt, exécutez la commande suivante :

    [root ~]$ for i in dev proc sys run; do mount -o bind /$i /mnt/$i; done; chroot /mnt

    Dans l’exemple précédent, les répertoires /dev, /proc, /sys et /run sont montés par liaison à partir du système de fichiers racine d’origine. Cette configuration permet aux processus qui s'exécutent dans l'environnement chroot d'accéder aux répertoires système.

Définir le mot de passe de l'utilisateur racine ou de tout autre utilisateur du système d'exploitation

Dans chroot, utilisez la commande passwd pour définir le mot de passe de l'utilisateur de votre système d'exploitation et autoriser l'accès racine dans la configuration SSH.

Dans l'exemple suivant, l'utilisateur est root : Vous pouvez définir un mot de passe racine à l'aide de la commande suivante :

[root ~]$ passwd root

Pour configurer Autoriser l'accès racine au démon SSH (sshd) sous Linux et changer #PermitRootLogin yes à PermitRootLogin yes, exécutez le code suivant :

[root ~]$ sed -i 's/#\?PermitRootLogin .*/PermitRootLogin yes/' /etc/ssh/sshd_config

Transmettre les paramètres du noyau au chargeur de démarrage GRUB

Pour envoyer toutes les sorties de console vers le port série, les paramètres de noyau suivants console=tty0 console=ttyS0,115200 doivent être transmis au chargeur de démarrage GRUB.

Remarque : Les valeurs tty0 et ttyS0 contiennent un zéro et non la lettre O.

La liste suivante répertorie les options sélectionnées pour cet exemple :

  • console= est un paramètre de noyau qui spécifie le périphérique de console préféré pour les messages du noyau.
  • tty0 fait référence à la première console virtuelle (mode texte) du système.
  • ttyS0 fait référence au premier port série.
  • 115200 est le débit en bauds (bits par seconde) du port série. Il s'agit d'un débit en bauds courant utilisé pour les communications série.
  • n8 spécifie la taille des caractères et les paramètres de parité pour le port série. n signifie l’absence de parité. 8 indique que la taille des caractères est de 8 octets.
  • Le paramètre tty0 active le noyau pour envoyer des messages de console à la première console virtuelle (tty0). Il s'agit généralement de la console principale en mode texte sur les systèmes Linux.
  • Le paramètre ttyS0 configure le noyau pour envoyer des messages de console au premier port série (ttyS0). Les messages sont envoyés à un débit de 115200 sans parité et avec 8 octets par caractère.

Vérifier et mettre à jour des paramètres GRUB2 de la console série

Ajoutez les paramètres du noyau console=tty0 et console=ttyS0,115200 à la ligne GRUB_CMDLINE_LINUX_DEFAULT dans le fichier /etc/default/grub

Procédez comme suit :

  1. Ouvrez le fichier /etc/default/grub avec un éditeur de texte dans chroot. Par exemple, pour utiliser l'éditeur nano ou vi, exécutez l'une des commandes suivantes :

    [root ~]$ nano /etc/default/grub
    [root ~]$ vi /etc/default/grub
  2. Localisez la ligne qui commence par GRUB_CMDLINE_LINUX_DEFAULT. La ligne ressemble à ce qui suit :

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
  3. Ajoutez les paramètres du noyau console=tty0 et console=ttyS0,115200 à cette ligne. Saisissez un espace pour séparer ces paramètres du noyau des paramètres actuels. La ligne mise à jour ressemble à ce qui suit :

    GRUB_CMDLINE_LINUX_DEFAULT="quiet splash console=tty0 console=ttyS0,115200"
  4. Enregistrez les modifications et quittez l'éditeur de texte.

  5. Pour mettre à jour la configuration GRUB, exécutez la commande suivante :

    Pour Red Hat, CentOS, Amazon Linux et Rocky Linux

    Sur les machines basées sur le BIOS :

    [root ~]$ grub2-mkconfig -o /boot/grub2/grub.cfg

    Sur les machines basées sur UEFI :

    [root ~]$ grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

    Pour Ubuntu et Debian

    La commande suivante régénère le fichier de configuration GRUB avec les nouveaux paramètres du noyau.

    [root ~]$ update-grub
  6. Pour quitter chroot, et démonter /dev, /run, /proc et /sys, exécutez la commande suivante :

    [root ~]$ exit; umount -fl /mnt/{dev,proc,run,sys,}
  7. Dans la console Amazon EC2, sélectionnez Instances, puis choisissez l'instance de secours.

  8. Sélectionnez État de l’instance, Arrêter l’instance, puis sélectionnez Oui, Arrêter.

  9. Détachez le volume racine id-##### (le volume de l'instance affectée) de l'instance de secours.

  10. Attachez le volume racine à l'instance affectée en tant que volume racine (/dev/sda1), puis démarrez l'instance.

  11. Utilisez le client basé sur un navigateur pour vous connecter à la console série de votre instance EC2.

  12. Connectez-vous avec l'utilisateur en tant que root et en utilisant le mot de passe défini précédemment.

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 7 mois