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

Dernière mise à jour : 08/07/2022

Je dois ajouter un utilisateur supplémentaire 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 depuis la paire de clés.

Remarque : vous devez disposer d'une paire de clés ou d'une clé privée pour récupérer une clé publique. Afin de créer une paire de clés, veuillez consulter la section Créer une paire de clés à l'aide d'Amazon EC2. Pour la sécurité SSH, il est recommandé de créer des paires de clés via la console EC2 ou un outil tiers.

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-collez l'exemple de script suivant dans le champ User Data (Données utilisateur). Pour username (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: /usr/bin/systemctl restart httpd"
      - "ALL=(ALL) NOPASSWD: /usr/bin/cp /home/username/webserver_configuration.conf /etc/httpd/conf.d/"
    shell: /bin/bash
    ssh-authorized-keys: 
    - ssh-rsa AB3nzExample

Cet exemple de script permet au nouvel utilisateur d'effectuer uniquement les actions root suivantes :

  • Copiez le fichier /home/username/webserver_configuration.conf dans /etc/httpd/conf.d/.
  • Redémarrez le service du serveur Web.

Afin d'accorder à l'utilisateur un accès complet à EC2, remplacez le champ sudo par sudo: [ "ALL=(ALL) NOPASSWD:ALL" ].

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 ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?