Configuration SSH avec Ansible

Configuration SSH avec Ansible

Nous partons du postulat que vous avez indiqué votre fichier inventaire dans le fichier de conf d’ansible (cf. article)

Créer un utilisateur jojo avec ansible. J’install whois s’il est absent, je génère le mot de passe chiffré et je le passe dans le fichier yaml.

(ansible) root@srv:/root/ansible# apt install whois

(ansible) root@srv:/root/ansible# mkpasswd --method=sha-512
Mot de passe : 
$6$TeOizDxq1e$UghoIeoC/lS7s15K/hAnEeD091t7ealziU/MyIoYiMJNti3Cw.gSFOADADdUN97yjFRe97/xR24TBv2lstOKr/
(ansible) root@srv:/root/ansible# cat base.yml
- hosts: all
  become: yes
  tasks:
    - name: Création et ajout du compte ansible dans le groupe sudo
      user:
        name: jojo
        groups: sudo
        update_password: on_create
        password: $6$TeOizDxq1e$UghoIeoC/lS7s15K/hAnEeD091t7ealziU/MyIoYiMJNti3Cw.gSFOADADdUN97yjFRe97/xR24TBv2lstOKr/
        create_home: yes 
        append: yes
        shell: /bin/bash

(ansible) root@srv:/root/ansible# ansible-playbook --user root --ask-pass --become --ask-become-pass base.yml

Déploiement d’une clé ssh avec ansible

(ansible) root@srv:/root/ansible# cat base.yml
- hosts: all
  become: yes 
  tasks:
    - name: Ping Host
      ping:
    - name: déployment de la clé SSH
      authorized_key:
        user: jojo
        key: "{{ lookup('file','/home/jojo/.ssh/id_rsa.pub') }}"

(ansible) root@srv:/root/ansible# ansible-playbook --user jojo --ask-pass --become --ask-become-pass base.yml

une fois la clé ajouté vous pourrez vous passer le l’option (–ask-pass) pour les prochaines commandes et garder juste (–become –ask-become-pass) pour devenir root via sudo.

Modification de la configuration de sshd avec ansible pour authoriser un seul utilisateur en ssh et désactiver la connexion par mot de passe.

(ansible) root@srv:/root/ansible# cat base.yml
- hosts: all
  become: yes
  handlers:
    - name: restart ssh
      service:
        name: ssh
        state: restarted 
  tasks:
    - name: Ping Host
      ping:
    - name: déployment de la clé SSH
      authorized_key:
        user: jojo
        key: "{{ lookup('file','/home/jojo/.ssh/id_rsa.pub') }}"
    - name: Désactivation de la connexion via root
      lineinfile: 
        dest: /etc/ssh/sshd_config 
        regexp: "^PermitRootLogin" 
        line: "PermitRootLogin no" 
        state: present
      notify: restart ssh
    - name: Authoriser la connexion de l'utilisateur jojo
      lineinfile:
        dest: /etc/ssh/sshd_config
        regexp: "^AllowUsers"
        line: "AllowUsers jojo"
        state: present
      notify: restart ssh
    - name: Désactiver la connexion via password
      lineinfile:
        dest: /etc/ssh/sshd_config
        regexp: "^PasswordAuthentication"
        line: "PasswordAuthentication no"
        state: present
      notify: restart ssh
(ansible) root@srv:/root/ansible# ansible-playbook --user jojo --ask-pass --become --ask-become-pass base.yml

Puis-que la directivement « handlers » qui est appelé par « notify » ne vas relancer sshd que si les tâches renvoie comme status (changed) c’est à dire que le fichier n’était pas dans l’état demandé et il à été modifié. Vous pouvez relancer le service sshd directement avec :

(ansible) root@srv:/root/ansible# ansible -m service -a 'name=ssh state=restarted' --user jojo  --become --ask-become-pass all

Pour supprimer un utilisateur avec ansible

    - name: Suppression de l'utilisateur debian
      user:
        name: debian
        state: absent
        remove: yes
joel

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.