Ansible · 6 min read · Nov 16, 2025

Configurer un nouvel utilisateur et l'authentification par clé SSH avec Ansible sur Ubuntu 18.04

Ansible est un outil d’automatisation simple qui automatise le déploiement d’applications logicielles, le provisionnement cloud et la gestion de configuration. C’est un outil d’orchestration de serveur qui vous aide à gérer et contrôler un grand nombre de nœuds serveur depuis des endroits uniques appelés ‘Machines de Contrôle’. Ansible a été créé par Michael DeHaan en 2012 et est écrit en Python et Powershell.

Dans ce tutoriel, nous allons apprendre à déployer un nouvel utilisateur et à activer l’authentification par clé SSH à l’aide de l’outil d’automatisation Ansible. Nous apprendrons également à configurer la ‘Machine de Contrôle’ Ansible, ainsi qu’à écrire un simple playbook ansible.

Prérequis

  • 2 serveurs Ubuntu 18.04 ou plus - 10.0.15.10 machine-de-contrôle
  • 10.0.15.21 ansi01
  • 10.0.15.22 ansi02
  • Privilèges root

Que allons-nous faire ?

  1. Configurer la Machine de Contrôle Ansible
  2. Définir l’utilisateur et la clé SSH
  3. Créer un fichier d’inventaire
  4. Créer un Playbook Ansible
  5. Déployer le serveur à l’aide du Playbook
  6. Tester

Étape 1 - Configurer la Machine de Contrôle Ansible

Dans ce tutoriel, nous utiliserons les serveurs Ubuntu 16.04 comme ‘Machine de Contrôle’ Ansible et hôtes ansible. La première étape que nous devons faire est de configurer la ‘machine de contrôle’.

Nous allons installer python et ansible sur la ‘machine de contrôle’ ansible en exécutant la commande suivante.

sudo apt install python ansible -y

Configurer la Machine de Contrôle Ansible

Après l’installation, nous allons ajouter un nouvel utilisateur système.

Nous allons ajouter un nouvel utilisateur nommé ‘provision’ afin d’effectuer le provisionnement du serveur à l’aide d’Ansible.

Ajoutez le nouvel utilisateur ‘provision’ et donnez-lui un mot de passe.

useradd -m -s /bin/bash provision  
passwd provision

Ajoutez maintenant l’utilisateur ‘provision’ pour sudo sans mot de passe en créant un nouveau fichier de configuration sous ‘/etc/sudoers.d/‘ en utilisant la commande ci-dessous.

echo  -e 'provision\tALL=(ALL)\tNOPASSWD:\tALL' > /etc/sudoers.d/provision

Un nouvel utilisateur a été créé, et il peut maintenant utiliser sudo sans mot de passe.

Ajouter un utilisateur

Étape 2 - Définir l’utilisateur et la clé SSH

Dans cette étape, nous allons définir l’utilisateur pour les hôtes ansible. Cet utilisateur sera automatiquement créé par ansible, donc nous devons juste définir le nom d’utilisateur, le mot de passe et la clé publique ssh.

Pour chaque serveur (‘ansi01’ et ‘ansi02’), nous allons créer un nouvel utilisateur nommé ‘provision’ avec le mot de passe ‘secret01’. Et nous devons chiffrer le mot de passe ‘secret01’ en utilisant la commande mkpasswd.

Chiffrez le mot de passe ‘secret01’ en utilisant la commande ci-dessous.

mkpasswd --method=SHA-512  
TAPEZ LE MOT DE PASSE 'secret01'

Remarque :

Assurez-vous que le paquet ‘whois’ est installé sur le système, ou vous pouvez l’installer en utilisant la commande suivante.

sudo apt install whois -y

Et vous obtiendrez le mot de passe chiffré SHA-512.

Ensuite, nous allons générer une nouvelle clé ssh.

Connectez-vous à l’utilisateur ‘provision’ et générez la clé ssh en utilisant la commande ssh-keygen.

su - provision  
ssh-keygen -t rsa

Maintenant, l’utilisateur et le mot de passe ont été définis, et la clé ssh a été créée (située dans le répertoire ‘.ssh’).

l'utilisateur et le mot de passe ont été définis

Étape 3 - Créer un nouvel inventaire

Dans cette étape, nous allons définir les fichiers d’inventaire pour tous les hôtes serveur.

Connectez-vous en tant qu’utilisateur ‘provision’ et créez un nouveau répertoire pour le projet.

su - provision  
mkdir -p ansible01/

Allez dans le répertoire ‘ansible01’ et créez un nouveau fichier d’inventaire ‘inventory.ini’ en utilisant vim.

cd ansible01/  
vim inventory.ini

Collez la configuration suivante là-bas.

[webserver]  
 ansi01 ansible_host=10.0.15.21  
 ansi02 ansible_host=10.0.15.22

Enregistrez et quittez.

Maintenant, créez un nouveau fichier de configuration ansible ‘ansible.cfg’.

vim ansible.cfg

Collez la configuration suivante là-bas.

[defaults]  
 inventory = /home/provision/ansible01/inventory.ini

Enregistrez et quittez.

Créer un nouvel inventaire

Le fichier d’inventaire ansible a été créé, et nos scripts ansible seront situés sous l’utilisateur ‘provision’, dans le répertoire ‘ansible01’.

Étape 4 - Créer un Playbook Ansible

Un Playbook Ansible est un ensemble d’instructions que vous envoyez pour s’exécuter sur un ou plusieurs hôtes serveur. Il représente le provisionnement ansible, où l’automatisation est définie comme des tâches, et tous les travaux comme l’installation de paquets, l’édition de fichiers, seront effectués par des modules ansible.

Dans cette étape, nous allons créer un nouveau playbook ansible pour déployer un nouvel utilisateur, déployer la clé ssh et configurer le service ssh.

Avant de créer un nouveau playbook ansible, nous allons scanner toutes les empreintes des serveurs en utilisant la commande ssh-keyscan comme ci-dessous.

ssh-keyscan 10.0.15.21 >> ~/.ssh/known_hosts  
ssh-keyscan 10.0.15.22 >> ~/.ssh/known_hosts

Ces empreintes de serveurs seront stockées dans le fichier ‘.ssh/known_hosts’.

Créer un Playbook Ansible

Remarque :

Si vous avez beaucoup de nœuds serveur, vous pouvez enregistrer votre liste d’hôtes et ensuite scanner manuellement l’empreinte de la clé ssh en utilisant un script bash comme montré ci-dessous.

for i in $(cat list-hosts.txt)  
do  
ssh-keyscan $i >> ~/.ssh/known_hosts  
done

Ensuite, créez le playbook ansible nommé ‘deploy-ssh.yml’ en utilisant vim.

vim deploy-ssh.yml

Collez le playbook ansible suivant là-bas.

---  
 - hosts: all  
   vars:  
     - provision_password: '$6$w9S3t7x1kRtmG0u$6nVU9KZsC12Q8DYI4FtgKPy.e/cq/jseB/.DViTO1SpUnoCy.dxcOf8hyfitGq5V0yhgXccxzlqm2o.I3SlDJ0'  
  gather_facts: no  
   remote_user: root  
   
   tasks:  
   
   - name: Ajouter un nouvel utilisateur nommé provision  
     user:  
          name=provision  
          password={{ provision_password }}  
   
   - name: Ajouter l'utilisateur provision aux sudoers  
     copy:  
          dest: "/etc/sudoers.d/provision"  
          content: "provision  ALL=(ALL)  NOPASSWD: ALL"  
   
   - name: Déployer la clé SSH  
     authorized_key: user=provision  
                     key="{{ lookup('file', '/home/provision/.ssh/id_rsa.pub') }}"  
                     state=present  
   
   - name: Désactiver l'authentification par mot de passe  
     lineinfile:  
           dest=/etc/ssh/sshd_config  
           regexp='^PasswordAuthentication'  
           line="PasswordAuthentication no"  
           state=present  
           backup=yes  
     notify:  
       - redémarrer ssh  
   
   - name: Désactiver la connexion root  
     lineinfile:  
           dest=/etc/ssh/sshd_config  
           regexp='^PermitRootLogin'  
           line="PermitRootLogin no"  
           state=present  
           backup=yes  
     notify:  
       - redémarrer ssh  
   
   handlers:  
   - name: redémarrer ssh  
     service:  
       name=sshd  
       state=restarted

Enregistrez et quittez.

Dans le script du playbook :

  • nous créons le script de playbook ‘deploy-ssh.yml’ à appliquer sur tous les serveurs définis dans le fichier ‘inventory.ini’.
  • nous créons la variable ansible ‘provision_password’, contenant le mot de passe chiffré pour le nouvel utilisateur.
  • Définissez les faits Ansible sur ‘non’.
  • Définissez l’utilisateur ‘root’ comme utilisateur distant pour effectuer l’automatisation des tâches.
  • Nous créons de nouvelles tâches pour ajouter un nouvel utilisateur, ajouter l’utilisateur aux sudoers et télécharger la clé ssh.
  • Nous créons de nouvelles tâches pour configurer les services ssh, désactiver la connexion root et désactiver l’authentification par mot de passe. Les tâches de configuration du ssh déclencheront les gestionnaires ‘redémarrer ssh’.
  • Nous créons un gestionnaire pour redémarrer le service ssh.

Étape 5 - Exécuter le Playbook

Connectez-vous à l’utilisateur ‘provision’ et allez dans le répertoire ‘ansible01’.

su - provision  
cd ansible01/

Maintenant, exécutez le playbook ‘deploy-ssh.yml’ en utilisant la commande comme montré ci-dessous.

ansible-playbook deploy-ssh.yml --ask-pass

Tapez votre mot de passe root, et vous obtiendrez le résultat comme ci-dessous.

Exécuter le Playbook

Toutes les tâches pour déployer un nouvel utilisateur et une clé ssh ont été complétées avec succès.

Étape 6 - Tester

Testez en utilisant la commande ansible.

ansible webserver -m ping  
ansible webserver -m shell -a id

Maintenant, vous obtiendrez les messages verts comme ci-dessous.

Tester Ansible

Maintenant, nous pouvons gérer ces serveurs ‘ansi01’ et ‘ansi02’ à l’aide d’Ansible, et l’utilisateur ‘provision’ sera l’utilisateur par défaut pour Ansible.

Tester la connexion aux serveurs

ssh 10.0.15.21  
ssh 10.0.15.22

Et vous serez connecté à chaque serveur en utilisant la clé par défaut ‘.ssh/id_rsa’ et en utilisant l’utilisateur ‘provision’.

Tester la connexion au serveur

Un autre test

Le déploiement d’un nouvel utilisateur et d’une clé ssh à l’aide d’ansible a été complété avec succès.

Référence

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.