Instructions pas Ă  pas pour retrouver l'accĂšs aux instances Linux Amazon EC2 lors de la perte d'un fichier pem

Si lors de la crĂ©ation de l'instance Linux dans AWS, une paire de clĂ©s (KeyPair) n'a pas Ă©tĂ© créée pour y accĂ©der via SSH ou qu'elles sont perdues, alors un certain nombre d'opĂ©rations doivent ĂȘtre effectuĂ©es pour accĂ©der Ă  la machine. Vous ne pouvez pas ajouter de clĂ©s Ă  une instance dĂ©jĂ  en cours d'exĂ©cution via la console AWS. Il existe trois façons de restaurer l'accĂšs SSH Ă  une instance.

Le moyen le plus simple consiste à configurer la clé à l'aide du mécanisme cloud-init (merci pour l'astuce de yusman ). Mais cela ne fonctionne pas si les droits sur le répertoire /home sont endommagés ou si la distribution ne prend pas en charge les directives cloud-init.

La deuxiÚme façon consiste à créer une image (Amazon Machine Image) à partir d'une instance existante, puis à lancer une nouvelle instance basée sur celle-ci, mais avec une clé. Ainsi, la machine existante sera effectivement clonée avec la seule différence qu'au dernier stade, il est possible de créer de nouvelles clés. La création d'une image peut prendre beaucoup de temps pour une instance avec de grands disques, et vous devrez configurer à nouveau tous les services liés à cette machine. Par conséquent, cette méthode prendra dans la plupart des cas plus de temps.

Les documents officiels d'Amazon décrivent une autre façon . Il vous permet de restaurer l'accÚs et de minimiser le coût des services de reconfiguration (par rapport à la deuxiÚme méthode), qui sont liés à une instance à laquelle l'accÚs est perdu. L'article en donne une description pas à pas.

Attention! Cette méthode ne fonctionne que pour les instances qui utilisent le stockage en mode bloc (Amazon Elastic Block Store) en tant que périphérique racine, et ne fonctionne pas pour le stockage d'instance local (Amazon EC2 Instance Store).

Pour savoir quel type de périphérique racine vous utilisez, ouvrez la console Amazon EC2, accédez à Instances , sélectionnez une instance et vérifiez la valeur du paramÚtre Type de périphérique racine dans le panneau avec des informations détaillées.

Type de périphérique racine d'instance

Si votre machine est équipée d'EBS , cette méthode vous convient.

Étape 1. PrĂ©paration


Vous devez d'abord enregistrer certaines informations afin de ne pas vous laisser distraire et de ne pas passer Ă  d'autres Ă©crans (d'autant plus que cela sera trĂšs gĂȘnant). Toutes les donnĂ©es se trouvent dans les informations dĂ©taillĂ©es de l'instance (vous savez dĂ©jĂ  comment vous y rendre). Enregistrez les paramĂštres suivants:

  • ID d'instance
  • ID AMI
  • ID EBS
  • Appareil racine
  • Zone de disponibilitĂ©

Pour une instance exécutée dans VPC , enregistrez la valeur ID VPC .

Pour EC2-classic : si une adresse IP Ă©lastique ( Elastic IP ) est créée pour une instance, sa valeur doit Ă©galement ĂȘtre enregistrĂ©e.

ParamĂštres d'instance Ă  enregistrer
Image cliquable

Pour obtenir l'identifiant de stockage en bloc ( ID EBS ), cliquez sur le nom du périphérique racine .

ID EBS


Étape 2. CrĂ©ation d'une instance temporaire


L'Ă©tape suivante consiste Ă  crĂ©er une instance avec laquelle vous restaurerez les clĂ©s sur l'instance d'origine. Vous pouvez ignorer cette Ă©tape si vous avez une autre instance en cours d'exĂ©cution situĂ©e dans la mĂȘme zone (zone de disponibilitĂ©) que celle restaurĂ©e, et en mĂȘme temps qu'elle a Ă©tĂ© créée en utilisant la mĂȘme AMI ou la version du systĂšme d'exploitation sur elle vous permettra de connecter le disque Ă  partir de l'instance d'origine et copiez-y les clĂ©s SSH. S'il n'y a pas une telle instance, procĂ©dez comme suit:

  • AccĂ©dez Ă  la console EC2 (sur le tableau de bord ou dans le menu Instances ) et cliquez sur Lancer l'instance
  • Sur la page de sĂ©lection AMI ( Choose an Amazon Machine Image ), sĂ©lectionnez celle qui a Ă©tĂ© utilisĂ©e pour crĂ©er l'instance d'origine (vous l'avez notĂ©e Ă  la premiĂšre Ă©tape - ID AMI ). Si, pour une raison quelconque, cette AMI n'est pas disponible, vous pouvez crĂ©er une image Ă  partir de l'instance d'origine et l'utiliser, ou sĂ©lectionner le type d'AMI auquel vous pouvez connecter le disque racine de l'instance restaurĂ©e
  • Sur la page Choisir un type d'instance , sĂ©lectionnez le type le moins cher disponible.
  • Sur la page Configurer les dĂ©tails de l'instance , spĂ©cifiez la mĂȘme zone de disponibilitĂ© que dans notre instance. S'il s'exĂ©cute dans VPC, sĂ©lectionnez le mĂȘme VPC dans l'Ă©lĂ©ment RĂ©seau et spĂ©cifiez le sous-rĂ©seau dans cette zone.

    Configuration de la zone de disponibilité

    Cependant, il n'est pas nécessaire de modifier les paramÚtres des interfaces réseau.
  • Aucune modification n'est requise sur la page Ajouter un stockage .
  • Sur la page des balises ( Ajouter des balises ), ajoutez un nom pour l'instance temporaire afin qu'elle soit facile Ă  identifier et ne perdez pas de temps Ă  rĂ©concilier l' ID d'instance et l' ID EBS , car sur les pages oĂč vous devrez dĂ©terminer l'instance ou le volume avec lequel vous travaillez, dans le titre cette valeur apparaĂźtra.

    Nom sur la page Ajouter des balises

  • Cliquez sur Review and Launch puis sur Launch
  • La derniĂšre Ă©tape consiste Ă  sĂ©lectionner une paire de clĂ©s existante ou Ă  en crĂ©er une nouvelle. TĂ©lĂ©chargez le fichier clĂ© (pem) et n'oubliez pas de sauvegarder afin que toutes les opĂ©rations ne soient pas Ă  refaire.

    Enregistrement de KeyPair
  • AprĂšs avoir enregistrĂ© le fichier, lancez l'instance avec le bouton Lancer les instances


Étape 3. Connexion du disque racine de la machine restaurĂ©e Ă  une instance temporaire


Vous devez d'abord dĂ©connecter le disque de l'instance d'origine et le connecter Ă  une instance temporaire. Comme il s'agit du disque racine, l'instance d'origine devra ĂȘtre arrĂȘtĂ©e avant de le dĂ©connecter.

  • AccĂ©dez Ă  la console EC2 dans la section Instances et sĂ©lectionnez l'instance d'origine (elle peut ĂȘtre dĂ©terminĂ©e par l' ID d'instance enregistrĂ© prĂ©cĂ©demment ou par un nom diffĂ©rent de celui que vous avez spĂ©cifiĂ© lors de la crĂ©ation de l'instance temporaire).

    ArrĂȘt d'instance

    Ensuite dans le menu Actions - Instance State - Stop .

    Attention! Lorsque l'instance s'arrĂȘte, toutes les donnĂ©es du stockage local (Amazon EC2 Instance Store) sont effacĂ©es. Si vous avez des donnĂ©es sur de tels volumes, veillez Ă  leur sĂ©curitĂ© en les transfĂ©rant vers un stockage permanent, si nĂ©cessaire.
  • Une fois l'instance arrĂȘtĂ©e, accĂ©dez Ă  la section Elastic Block Store - Volumes et sĂ©lectionnez le volume racine de l'instance d'origine. Il peut ĂȘtre dĂ©terminĂ© par l' ID de volume stockĂ© ou basĂ© sur les informations de la colonne Informations sur la piĂšce jointe , qui contient le nom de l'instance.

    Disque muet

    Suivant dans le menu Actions - Détacher le volume
  • Connectez ce volume Ă  une instance temporaire. Pour ce faire, sĂ©lectionnez-le Ă  nouveau, puis dans le menu Actions - Attacher un volume et dans la boĂźte de dialogue qui apparaĂźt, spĂ©cifiez votre instance temporaire.

    Connexion du lecteur

    Cliquez ensuite sur Attacher . Si l'instance d'origine a été créée via l' AMI AWS Marketplace et que la section contient des codes AWS Marketplace, vous recevrez une erreur indiquant qu'il est impossible de connecter la section avec des codes à l'instance de travail.

    Erreur de connexion du lecteur avec les codes AWS Marketplace

    Dans ce cas, arrĂȘtez notre instance temporaire et rĂ©pĂ©tez les Ă©tapes pour connecter le volume racine de l'instance d'origine Ă  l'instance temporaire. La deuxiĂšme tentative devrait rĂ©ussir.
  • Vous devriez maintenant voir que les deux disques sont connectĂ©s Ă  une instance temporaire.

    Les deux disques sont connectés à une instance temporaire
  • Si vous avez arrĂȘtĂ© l'instance, exĂ©cutez-la:

    • AccĂ©dez Ă  la section Instances de la barre de navigation.
    • Choisissez une instance temporaire
    • Ensuite dans le menu Actions - État de l'instance - DĂ©marrer .


Étape 4. PrĂ©paration des clĂ©s pour la connexion Ă  l'instance via SSH


Les utilisateurs de Linux n'ont pas besoin de générer de clés supplémentaires. Vous devez seulement donner des autorisations de lecture à ce fichier:

chmod 400 my-keypair.pem

Préparation des clés si vous exécutez Windows
Pour vous connecter à une machine Linux, nous utiliserons l'utilitaire PuTTY, donc si vous ne l'avez pas installé, téléchargez- le. Pour vous connecter via SSH en l'utilisant, vous aurez besoin d'une clé ppk , tandis qu'avec AWS, la clé au format pem a été enregistrée . Afin d'obtenir la clé au format souhaité, procédez comme suit:

  • Ouvrez PuTTYgen (installĂ© avec PuTTY)
  • SĂ©lectionnez 2048 bits dans les paramĂštres RSA

    RSA 2048 bits
  • TĂ©lĂ©chargez la clĂ© pem enregistrĂ©e en cliquant sur Charger (Charger un fichier de clĂ© privĂ©e existant)
  • SpĂ©cifiez la phrase de passe (phrase de passe clĂ© ) et confirmez-la ( confirmez la phrase de passe ). Ce n'est pas nĂ©cessaire, mais plus sĂ»r. La seule diffĂ©rence est que lors de la connexion Ă  l'aide de cette touche, il vous sera toujours demandĂ© de saisir cette phrase pour confirmer l'entrĂ©e
  • Enregistrez le fichier avec le nom que vous avez spĂ©cifiĂ© lors de la crĂ©ation de la paire de clĂ©s ( KeyPair ) lors de la crĂ©ation de l'instance temporaire (le nom coĂŻncide avec le nom de la clĂ© pem )

La clĂ© est prĂȘte.


Étape 5. Connectez-vous à une instance temporaire via SSH


Connectez-vous sur le port 22 à l'aide de la clé. Le nom d'utilisateur dépend de l'AMI utilisé pour créer l'instance. Vous l'avez écrit au tout début. Les noms d'utilisateur suivants sont possibles:

  • Amazon Linux 2 ou Amazon Linux AMI - ec2-user
  • Centos AMI - centos
  • Debian AMI - admin ou root
  • Fedora AMI - ec2-user ou fedora
  • RHEL AMI - utilisateur ec2 ou root
  • SUSE AMI - utilisateur ec2 ou root
  • Ubuntu AMI - Ubuntu
  • Pour le reste, si les noms ec2-user et root ne fonctionnent pas, contactez votre fournisseur AMI

Le nom d'hĂŽte auquel vous souhaitez vous connecter est user@aws-host.amazon.com , oĂč user est le nom dĂ©crit ci-dessus, et aws-host.amazon.com est l'adresse IP de votre instance, qui peut ĂȘtre trouvĂ©e sur l'onglet d'informations dĂ©taillĂ©es (Ă  partir de lĂ , vous avez enregistrĂ© les paramĂštres au tout dĂ©but). Le paramĂštre est appelĂ© IPv4 Public IP . Veuillez noter que si vous n'utilisez pas Elastic IP , chaque fois que vous dĂ©marrez l'instance, elle aura une nouvelle adresse IP.

Instructions de connexion pour les utilisateurs de Windows
  • Lancer PuTTY
  • Dans le champ Host Name , l'adresse est au format username @ ip-address

    Configurez PuTTY. Nom d'hĂŽte

  • AccĂ©dez Ă  la section Connexion - SSH - Auth et tĂ©lĂ©chargez la clĂ© ppk (fichier de clĂ© privĂ©e pour l'authentification)
  • Cliquez sur Ouvrir , puis acceptez de faire confiance au serveur
  • Si vous avez spĂ©cifiĂ© une phrase secrĂšte lors de la crĂ©ation d'une clĂ© ppk, saisissez-la pour confirmer l'entrĂ©e:

     Using username "ubuntu". Authenticating with public key "imported-openssh-key" Passphrase for key "imported-openssh-key": 

  • Vous ĂȘtes sur le serveur.

    Connexion au serveur réussie



Étape 6. Copie des clĂ©s d'une instance temporaire vers l'original


Montez le volume que vous avez connecté à l'instance temporaire pour pouvoir accéder à son systÚme de fichiers.

Monter la partition
Par exemple, si le nom du lecteur est /dev/sdf (il peut apparaßtre différemment sur votre instance), utilisez les opérations suivantes pour monter le volume dans /mnt/tempvol :

  • DĂ©terminez les noms de partition du lecteur mappĂ©:

    [user ~]$ lsblk

     NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 10G 0 disk └─xvda1 202:1 0 10G 0 part / xvdf 202:80 0 10G 0 disk └─xvdf1 202:81 0 10G 0 part 

    /dev/xvda1 et /dev/xvdf1 sont des partitions de disque. /dev/xvdf1 n'a pas de point de montage (MOUNTPOINT), c'est donc la partition de disque que nous avons connectée plus tÎt.
  • CrĂ©ez un rĂ©pertoire temporaire pour monter la partition:

    [user ~]$ sudo mkdir /mnt/tempvol
  • Montez la partition dans le rĂ©pertoire créé:

    [user ~]$ sudo mount /dev/ xvdf1 /mnt/tempvol


Copiez les clés SSH de l'instance temporaire vers la partition montée.

Attention! Utilisez le nom d'utilisateur fourni sur la ligne de commande. Cela est nĂ©cessaire, car malgrĂ© le fait que vous ayez rĂ©ussi Ă  vous connecter avec un nom d'utilisateur standard, qui dĂ©pend du systĂšme d'exploitation (dĂ©crit Ă  l'Ă©tape 5), dans l'AMI d'AWS Marketplace, il peut ĂȘtre diffĂ©rent aprĂšs la connexion. Par exemple, pour AMI WordPress Certified by Bitnami, lors de la connexion via SSH, la connexion standard pour Ubuntu est ubuntu . Cependant, le nom d'utilisateur aprĂšs la connexion est bitnami

Copier les clés
Par exemple, si le nom d'utilisateur est ubuntu , utilisez la commande suivante pour copier:

[user ~]$ cp .ssh/authorized_keys /mnt/tempvol/home/ ubuntu /.ssh/authorized_keys

Si vous n'ĂȘtes pas autorisĂ© Ă  modifier les fichiers dans /mnt/tempvol , copiez les fichiers Ă  l'aide de sudo et vĂ©rifiez les droits pour vous assurer que vous pouvez accĂ©der Ă  l'instance d'origine:

  • VĂ©rifiez les autorisations des fichiers:

    [user ~]$ sudo ls -l /mnt/tempvol/home/ ubuntu /.ssh/authorized_keys
    total 4
    -rw------- 1 200 500 392 Aug 15 00:06 authorized_keys

    Dans l'exemple, 200 est l'ID utilisateur et 500 est l'ID de groupe.
  • RedĂ©marrez la commande de copie de clĂ© Ă  l'aide de sudo :

    [user ~]$ sudo cp .ssh/authorized_keys /mnt/tempvol/home/ ubuntu /.ssh/authorized_keys

  • VĂ©rifiez si les autorisations sur le fichier ont changĂ©:

    [user ~]$ sudo ls -l /mnt/tempvol/home/ ubuntu /.ssh/authorized_keys

    Si les droits ont changé, restaurez-les:

    [user ~]$ sudo chown 200 : 500 /mnt/tempvol/home/ ubuntu /.ssh/authorized_keys


Démontez la section:

[user ~]$ sudo umount /mnt/tempvol

Étape 7. DĂ©marrage de l'instance avec un accĂšs restaurĂ© via SSH


  • Dans la console EC2, sĂ©lectionnez le lecteur que vous avez connectĂ© au temporaire et dans le menu: Actions - DĂ©tacher le volume . Attendez que l'Ă©tat du disque soit disponible (vous pouvez utiliser le bouton Actualiser pour mettre Ă  jour les informations).

    N'oubliez pas de pré-terminer l'instance si la section contient des codes AWS Marketplace.
  • Pour le mĂȘme lecteur, accĂ©dez au menu Actions - Attacher le volume
  • SĂ©lectionnez l'instance d'origine et spĂ©cifiez le nom du disque racine que vous avez enregistrĂ© au tout dĂ©but.

    Connexion du lecteur
    Image cliquable

    Cliquez sur Attacher
  • ExĂ©cuter l'instance
  • Pour EC2-classic : si Elastic IP a Ă©tĂ© configurĂ© pour l'instance d'origine, rĂ©associez-la Ă  celle-ci:

    • AccĂ©dez Ă  la section Elastic IP de la barre de navigation.
    • SĂ©lectionnez l'adresse IP Ă©lastique que vous avez notĂ©e au tout dĂ©but
    • Actions suivantes - Adresse associĂ©e
    • SĂ©lectionnez l' ID d' instance d'origine et cliquez sur Associer


Étape 8. Contrîle d'accùs


Connectez-vous à l'instance d'accÚs restaurée à l'aide de la clé générée.

Si le nom de la nouvelle paire de clés est différent du précédent, assurez-vous que vous vous connectez à l'aide de la nouvelle clé privée.

Étape 9. L'Ă©tape finale


Si vous avez créé une nouvelle instance temporaire afin d'effectuer toutes les opĂ©rations et que vous n'en avez pas utilisĂ© une existante, arrĂȘtez-la si vous n'en avez plus besoin:

  • AccĂ©dez Ă  la section Instances de la barre de navigation.
  • Choisissez une instance temporaire
  • Suivant dans le menu Actions - État de l'instance - Terminer

De cette façon, vous avez récupéré l'accÚs à l'instance Linux Amazon EC2.

Source: https://habr.com/ru/post/fr420297/


All Articles