linux-system-roles.ssh
ssh
Un rol de Ansible para gestionar la configuración de clientes SSH.
Requisitos
Este rol debería funcionar en cualquier sistema que tenga cliente openssh y sea compatible con ansible. El rol fue probado en:
- RHEL/CentOS 6, 7, 8, 9
- Fedora
- Debian
- Ubuntu
Requisitos de la colección
Para gestionar sistemas rpm-ostree
, el rol necesita módulos de colecciones externas.
Usa el siguiente comando para instalarlas:
ansible-galaxy collection install -vv -r meta/collection-requirements.yml
Variables del rol
Por defecto, el rol no debe modificar la configuración del sistema y generar un
ssh_config
global que coincida con el predeterminado del sistema operativo (la
configuración generada no conserva comentarios ni el orden de las opciones).
ssh_user
Por defecto (null
), el rol modificará la configuración global para todos
los usuarios. Otros valores se interpretarán como un nombre de usuario y el rol
modificará la configuración por usuario almacenada en ~/.ssh/config
del
usuario dado. El usuario debe existir antes de invocar este rol, de lo contrario
fallará.
ssh_skip_defaults
Por defecto (auto
), el rol escribe el archivo de configuración global
/etc/ssh/ssh_config
y mantiene los valores predeterminados del sistema operativo
(true). Esto se desactiva automáticamente cuando se crea un archivo de
configuración alternativo (ssh_drop_in_name!=null
) o cuando se crea un archivo
de configuración por usuario (ssh_user!=null
).
ssh_drop_in_name
Esto define el nombre del archivo de configuración alternativo que se colocará en
el directorio alternativo global. El nombre se usa en la plantilla
/etc/ssh/ssh_config.d/{name}.conf
para hacer referencia al archivo de
configuración a modificar. Si el sistema no soporta el directorio alternativo,
configurar esta opción hará que la ejecución falle. Por defecto es null
si
el sistema no soporta el directorio alternativo y 00-ansible
en caso contrario.
El formato sugerido es NN-nombre
, donde NN
es un número de dos dígitos
utilizado para ordenar y nombre
es un nombre descriptivo del contenido o del
propietario del archivo.
ssh dict
Un diccionario que contiene opciones de configuración y sus valores. Consulta el ejemplo a continuación.
ssh_...
:
Se pueden usar variables simples que consisten en el nombre de la opción
precedido por ssh_
en lugar del diccionario anterior. La variable simple
anula los valores en el diccionario anterior.
ssh_additional_packages
Este rol instala automáticamente los paquetes necesarios para los casos de uso
más comunes en la plataforma dada. Si se necesitan instalar paquetes adicionales
(por ejemplo, openssh-keysign
para autenticación basada en host), se pueden
especificar en esta variable.
ssh_config_file
El archivo de configuración que será escrito por este rol. El valor por defecto
se define por la plantilla /etc/ssh/ssh_config.d/{name}.conf
si el sistema tiene
directorio alternativo o /etc/ssh/ssh_config
de lo contrario. Si ssh_user!=null
,
el valor por defecto es ~/.ssh/config
.
Para escribir /etc/ssh/ssh_config
incluso si un directorio alternativo está
soportado, configura ssh_drop_in_name
como null
.
ssh_config_owner, ssh_config_group, ssh_config_mode
El propietario, grupo y modo del archivo de configuración creado. Por defecto,
los archivos son propiedad de root:root
con modo 0644
, a menos que
ssh_user!=null
. En ese caso, el modo es 0600
y el propietario y grupo se
derivan del nombre de usuario dado en la variable ssh_user
.
ssh_backup
Cuando se establece en false, el archivo original ssh_config
no se respalda.
Por defecto es true.
ssh_transactional_update_reboot_ok
Esta variable se utiliza para gestionar reinicios requeridos por actualizaciones
transaccionales. Si una actualización transaccional requiere un reinicio, el
rol procederá con el reinicio si ssh_transactional_update_reboot_ok
está
establecido en true. Si se establece en false, el rol notificará al usuario
que se requiere un reinicio, permitiendo un manejo personalizado de la
necesidad de reinicio. Si esta variable no se establece, el rol fallará
para asegurarse de que no se pase por alto el requisito de reinicio.
Ejemplo de Playbook
El siguiente playbook configura la configuración ssh del usuario root
en su
directorio personal para usar compresión, multiplexión de control maestro y
habilitar la autenticación GSSAPI en el bloque "match final all". Además,
crea un alias "example" para conectarse al host example.com como usuario
somebody. La última línea desactiva el reenvío X11.
- name: Gestionar clientes ssh
hosts: all
tasks:
- name: Configurar clientes 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
Más ejemplos están en el directorio examples/
.
rpm-ostree
Consulta README-ostree.md.
Licencia
LGPLv3, consulta el archivo LICENSE para más información.
Información del autor
Jakub Jelen, 2021 - 2023
OpenSSH SSH client configuration
ansible-galaxy install linux-system-roles.ssh