znerol.ssh_kba
Nom du Rôle
Configurer l'authentification par clé publique SSH pour la communication machine à machine.
Exigences
Le logiciel serveur et client OpenSSH doit être présent.
Variables du Rôle
Dans une configuration typique, ce rôle est appliqué soit à un client SSH, soit à un serveur SSH. Les tâches pour l'autre partie peuvent être déléguées en définissant ssh_kba_server_hostname
et ssh_kba_client_hostname
. Il est également recommandé de spécifier ssh_kba_server_user
et ssh_kba_client_user
au lieu de se fier aux valeurs par défaut.
Remarque : Les clés hôtes SSH sont collectées à partir des faits d'ansible. Il est donc important qu'elles soient rassemblées à l'avance pour toutes les machines impliquées.
Variables affectant le serveur
Hôte et utilisateur représentant l'extrémité serveur de la connexion SSH authentifiée par clé publique :
ssh_kba_server_hostname: "{{ inventory_hostname }}"
ssh_kba_server_user: # Utilisateur Ansible sur le serveur selon les faits.
Variables affectant le client
ssh_kba_client_hostname: "{{ inventory_hostname }}"
ssh_kba_client_user: # Utilisateur Ansible sur le serveur selon les faits.
ssh_kba_client_host_fqdn: # FQDN du serveur selon les faits.
ssh_kba_client_host_ip4: # Adresse IP par défaut du serveur selon les faits.
ssh_kba_client_host_ip6: # Adresse IP par défaut du serveur selon les faits.
Variables affectant la paire de clés
ssh_kba_keypair_type: rsa # Un des dsa, ecdsa, ed25519, rsa
ssh_kba_keypair_size: # Omettre par défaut
ssh_kba_keypair_comment: "{{ ssh_kba_client_user }}@{{ ssh_kba_client_hostname }}"
ssh_kba_keypair_dir: ~/.ssh
ssh_kba_keypair_name: "id_{{ ssh_kba_keypair_type }}"
ssh_kba_keypair_path: "{{ ssh_kba_keypair_dir }}/{{ ssh_kba_keypair_name }}"
ssh_kba_keypair_owner: "{{ ssh_kba_client_user }}"
ssh_kba_keypair_group: # Omettre par défaut
ssh_kba_keypair_attributes: # Omettre par défaut
ssh_kba_keypair_selevel: # Omettre par défaut
ssh_kba_keypair_serole: # Omettre par défaut
ssh_kba_keypair_setype: # Omettre par défaut
ssh_kba_keypair_seuser: # Omettre par défaut
La paire de clés sera régénérée si ssh_kba_keypair_force
est défini sur yes
.
ssh_kba_keypair_force: # Omettre par défaut
Le fait ssh_kba_keypair_pub
est défini sur la partie publique de la paire de clés pendant l'évaluation du rôle.
Variables affectant le fichier des clés autorisées du serveur
ssh_kba_keypair_pub: # voir la section des paires de clés ci-dessus
ssh_kba_server_authorized_keys_owner: "{{ ssh_kba_server_user }}"
ssh_kba_server_authorized_keys_comment: # Omettre par défaut
ssh_kba_server_authorized_keys_exclusive: # Omettre par défaut
ssh_kba_server_authorized_keys_key_options: # Omettre par défaut
ssh_kba_server_authorized_keys_manage_dir: # Omettre par défaut
ssh_kba_server_authorized_keys_path: # Omettre par défaut
Variables affectant le fichier des hôtes connus du client
ssh_kba_client_known_hosts_owner: "{{ ssh_kba_client_user }}"
ssh_kba_client_known_hosts_hash_host | default(omit) }}"
ssh_kba_client_known_hosts_path | default(omit) }}"
Le FQDN du serveur, les adresses IP et les faits de clé hôte sont collectés afin de les rendre disponibles dans les known_hosts
du client. Remplacer l'une des variables suivantes modifiera ce comportement :
ssh_kba_server_host_fqdn: # FQDN du serveur selon les faits.
ssh_kba_server_host_ip4: # Adresse IP par défaut du serveur selon les faits.
ssh_kba_server_host_ip6: # Adresse IP par défaut du serveur selon les faits.
ssh_kba_server_host_names: # Une liste contenant le FQDN et les adresses IP par défaut.
ssh_kba_server_host_keys: # Une liste de paires, chacune consistant en le type de clé (premier champ) et la véritable clé hôte (deuxième champ). Par défaut, elle utilise les valeurs disponibles à partir des faits d'hôte.
Les variables mentionnées ci-dessus seront utilisées pour peupler une variable avec une liste de noms d'hôtes et de clés :
ssh_kba_server_host_names_and_keys: # Une liste de paires, chacune consistant en un nom d'hôte (ou adresse IP) et une clé hôte correspondante (sous la forme acceptée par le module known_hosts)
Dépendances
Aucune.
Exemple de Playbook
- hosts: server.example.com
tasks:
- name: Rassembler les faits du client
delegate: client.example.com
delegate_facts: yes
setup:
- name: >-
Authentification par clé accordée à [email protected] sur
[email protected]
vars:
ssh_kba_server_user: alpha
ssh_kba_client_hostname: client.example.com
ssh_kba_client_user: beta
import_role:
name: znerol.ssh_kba
Licence
BSD