linux-system-roles.ssh
ssh
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
OpenSSH SSH client configuration
ansible-galaxy install linux-system-roles.ssh