Comment ajouter de nouveaux comptes utilisateur avec un accès SSH à mon instance EC2 à l'aide de cloud-init et des données utilisateur ?

Date de la dernière mise à jour : 25/02/2022

Je dois ajouter un autre utilisateur pouvant se connecter à mon instance Linux Amazon Elastic Compute Cloud (Amazon EC2) à l'aide de SSH. Comment cloud-init et les données utilisateur à cette fin ?

Brève description

Transmettez un script de données utilisateur à cloud-init qui effectue les opérations suivantes :

1.    Crée un utilisateur.

2.    Définit la propriété et les autorisations de fichiers appropriées pour le répertoire SSH et les fichiers qu'il contient.

3.    Ajoute la clé publique SSH au fichier authorized_keys.

Solution

Avant de commencer, notez les points suivants :

  • L'arrêt et le redémarrage de l'instance effacent toutes les données des volumes de stockage d'instance. Veillez à sauvegarder tous les volumes de stockage d'instances contenant des données que vous souhaitez conserver. Pour plus d'informations, consultez Déterminer le type d'appareil racine de votre AMI.
  • Le fait d'arrêter et de redémarrer l'instance modifie l'adresse IP publique de votre instance. Lorsque vous acheminez du trafic externe vers votre instance, une bonne pratique consiste à utiliser une adresse IP Elastic plutôt qu’une adresse IP publique.

1.    Connectez-vous à l’instance EC2 en utilisant SSH..

2.    Exécutez la commande suivante pour vérifier que cloud-init est installé :

sudo yum list installed cloud-init

Si cloud-init n'est pas installé, exécutez la commande suivante pour l'installer :

sudo yum install cloud-init

3.    Ouvrez la console Amazon EC2, puis sélectionnez l’instance.

4.    Choisissez Actions, sélectionnez Instance State (État de l'instance), puis choisissez Stop (Arrêter).

Remarque : si Stop (Arrêter) n'est pas disponible, cela signifie que l'instance est déjà arrêtée ou que son appareil racine est un volume de stockage d'instances.

5.    Récupérez la clé publique de la paire de clés.

6.    Sélectionnez Actions, sélectionnez Instance Settings (Paramètres de l'instance), puis choisissez View/Change User Data (Afficher/Changer les données utilisateur).

7.    Copiez et collez le script suivant dans le champ User Data (Données utilisateur).

Pour le nom d'utilisateur, saisissez le nom d'utilisateur du nouvel utilisateur. Pour ssh-rsa AB3nzExample, saisissez votre clé publique.

#cloud-config
cloud_final_modules:
- [users-groups,always]
users:
  - name: username
    groups: [ wheel ]
    sudo: [ "ALL=(ALL) NOPASSWD:ALL" ]
    shell: /bin/bash
    ssh-authorized-keys: 
    - ssh-rsa AB3nzExample

Remarque : par défaut, les directives cloud-init ne s'exécutent que lorsqu'une instance est lancée. Toutefois, lorsque vous utilisez ce script de données utilisateur, cloud-init ajoute la clé publique à l'instance à chaque fois que cette dernière redémarre. Si vous supprimez le script de données utilisateur, la fonctionnalité par défaut est restaurée.

8.    Choisissez Save (Enregistrer).

9.    Choisissez Actions, sélectionnez Instance State (État de l'instance), puis choisissez Start (Démarrer).

10.    Lorsque l'instance atteint l'état running (en cours d'exécution), connectez-vous en tant que nouvel utilisateur. Le nouvel utilisateur a le même comportement par défaut que ec2-user.

Remarque : la modification des données utilisateur d'une instance utilise l'action d'API ModifyInstanceAttribute. Vous pouvez créer une stratégie AWS Identity and Access Management (IAM) pour restreindre cette action.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?