linux-system-roles.ssh

ssh

ansible-centos.yml ansible-debian.yml ansible-fedora.yml ansible-lint.yml ansible-test.yml ansible-ubuntu.yml markdownlint.yml shellcheck.yml tft.yml tft_citest_bad.yml woke.yml

Un rôle Ansible pour gérer la configuration des clients SSH.

Exigences

Ce rôle devrait fonctionner sur n'importe quel système qui fournit un client OpenSSH et est supporté par Ansible. Le rôle a été testé sur :

  • RHEL/CentOS 6, 7, 8, 9
  • Fedora
  • Debian
  • Ubuntu

Exigences de collection

Afin de gérer les systèmes rpm-ostree, le rôle nécessite des modules provenant de collections externes. Utilisez la commande suivante pour les installer :

ansible-galaxy collection install -vv -r meta/collection-requirements.yml

Variables du rôle

Par défaut, le rôle ne devrait pas modifier la configuration du système et générer un ssh_config global qui correspond à la configuration par défaut de l'OS (la configuration générée ne conserve pas les commentaires ni l'ordre des options).

ssh_user

Par défaut (null), le rôle modifiera la configuration globale pour tous les utilisateurs. D'autres valeurs seront interprétées comme un nom d'utilisateur, et le rôle modifiera la configuration par utilisateur stockée dans ~/.ssh/config de l'utilisateur donné. L'utilisateur doit exister avant d'invoquer ce rôle, sinon cela échouera.

ssh_skip_defaults

Par défaut (auto), le rôle écrit le fichier de configuration système /etc/ssh/ssh_config et conserve les valeurs par défaut de l'OS. Cela est automatiquement désactivé lorsqu'un fichier de configuration drop-in est créé (ssh_drop_in_name!=null) ou lorsqu'un fichier de configuration par utilisateur est créé (ssh_user!=null).

ssh_drop_in_name

Cela définit le nom du fichier de configuration drop-in qui sera placé dans le répertoire drop-in système. Le nom est utilisé dans le modèle /etc/ssh/ssh_config.d/{name}.conf pour référencer le fichier de configuration à modifier. Si le système ne prend pas en charge le répertoire drop-in, définir cette option fera échouer le play. Par défaut, c'est null si le système ne supporte pas le répertoire drop-in et 00-ansible sinon.

Le format suggéré est NN-name, où NN est un nombre à deux chiffres utilisé pour le tri et name est un nom descriptif pour le contenu ou le propriétaire du fichier.

ssh dict

Un dictionnaire contenant des options de configuration et leurs valeurs respectives. Voir l'exemple ci-dessous.

  • ssh_... :

De simples variables constituées du nom de l'option précédé de ssh_ peuvent être utilisées plutôt que le dictionnaire ci-dessus. La variable simple remplace les valeurs dans le dictionnaire ci-dessus.

ssh_additional_packages

Ce rôle installe automatiquement les paquets nécessaires pour les cas d'utilisation les plus courants sur la plateforme donnée. Si des paquets supplémentaires doivent être installés (par exemple openssh-keysign pour l'authentification basée sur l'hôte), ils peuvent être spécifiés dans cette variable.

ssh_config_file

Le fichier de configuration qui sera écrit par ce rôle. La valeur par défaut est définie par le modèle /etc/ssh/ssh_config.d/{name}.conf si le système a un répertoire drop-in ou /etc/ssh/ssh_config sinon. Si ssh_user!=null, la valeur par défaut est ~/.ssh/config.

Pour écrire /etc/ssh/ssh_config même si un répertoire drop-in est supporté, définissez ssh_drop_in_name à null.

ssh_config_owner, ssh_config_group, ssh_config_mode

Le propriétaire, le groupe et le mode du fichier de configuration créé. Par défaut, les fichiers sont détenus par root:root avec le mode 0644, sauf si ssh_user!=null. Dans ce cas, le mode est 0600 et le propriétaire et le groupe sont dérivés du nom d'utilisateur donné dans la variable ssh_user.

ssh_backup

Lorsqu'il est défini sur false, le fichier ssh_config original n'est pas sauvegardé. La valeur par défaut est true.

ssh_transactional_update_reboot_ok

Cette variable est utilisée pour gérer les redémarrages nécessaires par les mises à jour transactionnelles. Si une mise à jour transactionnelle nécessite un redémarrage, le rôle procédera au redémarrage si ssh_transactional_update_reboot_ok est défini sur true. S'il est défini sur false, le rôle notifiera l'utilisateur qu'un redémarrage est requis, permettant une gestion personnalisée de l'exigence de redémarrage. Si cette variable n'est pas définie, le rôle échouera pour s'assurer que le besoin de redémarrage n'est pas négligé.

Exemple de Playbook

Le playbook suivant configure la configuration SSH de l'utilisateur root dans son répertoire personnel pour utiliser la compression, le multiplexage ControlMaster et activer l'authentification GSSAPI dans le bloc "match final all". De plus, il crée un alias "example" pour se connecter à l'hôte example.com en tant qu'utilisateur somebody. La dernière ligne désactive le transfert X11.

- name: Gérer les clients ssh
  hosts: all
  tasks:
  - name: Configurer les clients ssh
    include_role:
      name: linux-system-roles.ssh
    vars:
      ssh_user: root
      ssh:
        Compression: true
        ControlMaster: auto
        ControlPath: ~/.ssh/.cm%C
        Match:
          - Condition: "final all"
            GSSAPIAuthentication: true
        Host:
          - Condition: example
            Hostname: example.com
            User: somebody
      ssh_ForwardX11: false

D'autres exemples se trouvent dans le répertoire examples/.

rpm-ostree

Voir README-ostree.md

Licence

LGPLv3, voir le fichier LICENSE pour plus d'informations.

Informations sur l'auteur

Jakub Jelen, 2021 - 2023