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 : 19/06/2019

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.

Résolution

Avant de commencer, notez les points suivants :

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) est désactivé, cela implique que l'instance est déjà arrêtée ou son périphérique racine est un volume de stockage d'instance.

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 sont uniquement exécutées 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.