ssh
ssh
Роль Ansible для управления конфигурацией SSH-клиентов.
Требования
Эта роль должна работать на любой системе, предоставляющей клиент openssh и поддерживаемой ansible. Роль была протестирована на:
- RHEL/CentOS 6, 7, 8, 9
- Fedora
- Debian
- Ubuntu
Требования к коллекциям
Для управления системами rpm-ostree
роль требует модули из внешних коллекций. Используйте следующую команду для их установки:
ansible-galaxy collection install -vv -r meta/collection-requirements.yml
Переменные роли
По умолчанию роль не должна изменять конфигурацию системы и генерировать глобальный ssh_config
, который соответствует настройкам по умолчанию ОС (сгенерированная конфигурация не сохраняет комментарии и порядок опций).
ssh_user
По умолчанию (null
) роль будет изменять глобальную конфигурацию для всех пользователей. Другие значения будут интерпретированы как имя пользователя, и роль будет изменять пользовательскую конфигурацию, хранящуюся в ~/.ssh/config
данного пользователя. Пользователь должен существовать до вызова этой роли, иначе она завершится неудачей.
ssh_skip_defaults
По умолчанию (auto
) роль записывает конфигурационный файл для всей системы /etc/ssh/ssh_config
и сохраняет настройки по умолчанию ОС (true). Это автоматически отключается, когда создается файл конфигурации drop-in (ssh_drop_in_name!=null
) или когда создается файл конфигурации для пользователя (ssh_user!=null
).
ssh_drop_in_name
Это определяет имя для файла конфигурации drop-in, который будет размещен в системном каталоге drop-in. Имя используется в шаблоне /etc/ssh/ssh_config.d/{name}.conf
для ссылки на изменяемый файл конфигурации. Если система не поддерживает каталог drop-in, установка этой опции приведет к ошибке. Значение по умолчанию null
, если система не поддерживает каталог drop-in, и 00-ansible
в противном случае.
Рекомендуемый формат NN-name
, где NN
— двузначное число, используемое для сортировки, а name
— любое описательное имя для содержимого или владельца файла.
ssh dict
Словарь, содержащий параметры конфигурации и соответствующие значения. См. пример ниже.
ssh_...
:
Простые переменные, состоящие из имени опции с префиксом ssh_
, могут использоваться вместо словаря выше. Простая переменная переопределяет значения в словаре выше.
ssh_additional_packages
Эта роль автоматически устанавливает пакеты, необходимые для наиболее распространенных случаев использования на данной платформе. Если необходимо установить дополнительные пакеты (например, openssh-keysign
для аутентификации на основе хоста), их можно указать в этой переменной.
ssh_config_file
Файл конфигурации, который будет записан этой ролью. Значение по умолчанию определяется шаблоном /etc/ssh/ssh_config.d/{name}.conf
, если система поддерживает каталог drop-in, или /etc/ssh/ssh_config
в противном случае. Если ssh_user!=null
, значение по умолчанию ~/.ssh/config
.
Чтобы записать /etc/ssh/ssh_config
, даже если каталог drop-in поддерживается, установите ssh_drop_in_name
в null
.
ssh_config_owner, ssh_config_group, ssh_config_mode
Владелец, группа и режим созданного конфигурационного файла. По умолчанию файлы принадлежат root:root
с режимом 0644
, если только ssh_user!=null
. В этом случае режим будет 0600
, а владелец и группа будут взяты из имени пользователя, указанного в переменной ssh_user
.
ssh_backup
При установке в значение false оригинальный файл ssh_config
не будет сохранен. Значение по умолчанию true.
ssh_transactional_update_reboot_ok
Эта переменная используется для обработки перезагрузок, необходимых для транзакционных обновлений. Если транзакционное обновление требует перезагрузки, роль продолжит с перезагрузкой, если ssh_transactional_update_reboot_ok
установлено на true. Если установлено значение false, роль уведомит пользователя о том, что требуется перезагрузка, позволяя самостоятельно обрабатывать необходимость перезагрузки. Если эта переменная не установлена, роль завершится с ошибкой, чтобы предотвратить пропуск требования о перезагрузке.
Пример плейбука
Следующий плейбук настраивает ssh-конфигурацию пользователя root
в его домашнем каталоге для использования сжатия, мультиплексирования Control-Master и включает аутентификацию GSSAPI в блоке "match final all". Кроме того, он создает псевдоним "example" для подключения к хосту example.com как пользователь somebody. Последняя строка отключает перенаправление X11.
- name: Управление ssh-клиентами
hosts: all
tasks:
- name: Настроить 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
Больше примеров можно найти в каталоге examples/
.
rpm-ostree
Смотрите README-ostree.md
Лицензия
LGPLv3, смотрите файл LICENSE для получения дополнительной информации.
Информация об авторе
Jakub Jelen, 2021 - 2023
OpenSSH SSH client configuration
ansible-galaxy install linux-system-roles/ssh