ssh_server
Роль Ansible SSH-сервер
Описание
:grey_exclamation: Прежде чем использовать эту роль, пожалуйста, учтите, что все мои роли Ansible полностью написаны с учетом моей ИТ-инфраструктуры. Хотя они максимально универсальны, они могут не удовлетворять ваши потребности. Рекомендую внимательно проанализировать их работу и оценить возможность безопасной установки на ваши серверы.
Эта роль позволяет настраивать SSH-сервер.
Требования
Требуется Ansible версии >= 2.4
Зависимости
Семейство ОС
Эта роль доступна для Debian и CentOS.
Возможности
На данный момент роль может:
- установить sshd
- настроить sshd
- отфильтровать начальные модули, чтобы удалить слабые простые числа
- локальные факты
Переменные роли
Все переменные, которые можно переопределить, хранятся в файле defaults/main.yml, а также в таблице ниже. Чтобы увидеть значения по умолчанию, обратитесь к этому файлу.
Большинство переменных относится к параметрам конфигурации sshd. Пожалуйста, смотрите информацию на странице man.
Имя | Типы/Значения | Описание |
---|---|---|
ssh_server__facts |
Boolean | Установить локальный скрипт фактов |
ssh_server__moduli_minimum |
Integer | Минимальный размер простых чисел для хранения в файле модулей |
ssh_server__service_enabled |
Boolean | Включить или отключить службу |
ssh_server__protocol |
String | См. страницу man |
ssh_server__privilege_separation |
String | См. страницу man |
ssh_server__pidfile |
String | См. страницу man |
ssh_server__log_facility |
String | См. страницу man |
ssh_server__log_level |
String | См. страницу man |
ssh_server__ports |
Список целых чисел | См. страницу man |
ssh_server__listen |
Список ip | См. страницу man |
ssh_server__address_family |
String | См. страницу man |
ssh_server__use_dns |
Boolean | См. страницу man |
ssh_server__tcp_keepalive |
Boolean | См. страницу man |
ssh_server__allow_agent_forwarding |
Boolean | См. страницу man |
ssh_server__allow_tcp_forwarding |
Boolean | См. страницу man |
ssh_server__permit_open |
String | См. страницу man |
ssh_server__gateway_ports |
String | См. страницу man |
ssh_server__allow_stream_local_forwarding |
Boolean | См. страницу man |
ssh_server__permit_tunnel |
Boolean | См. страницу man |
ssh_server__compression |
String | См. страницу man |
ssh_server__ip_qos |
Tuple | См. страницу man |
ssh_server__kex_algorithms |
Список строк | См. страницу man |
ssh_server__kex_algorithms_additional |
Список строк | См. страницу man |
ssh_server__ciphers |
Список строк | См. страницу man |
ssh_server__ciphers_additional |
Список строк | См. страницу man |
ssh_server__macs |
Список строк | См. страницу man |
ssh_server__macs_additional |
Список строк | См. страницу man |
ssh_server__server_key_bits |
Integer | См. страницу man |
ssh_server__key_regeneration_interval |
Integer | См. страницу man |
ssh_server__authentication_methods |
String | См. страницу man |
ssh_server__use_pam |
Boolean | См. страницу man |
ssh_server__use_login |
Boolean | См. страницу man |
ssh_server__password_authentication |
Boolean | См. страницу man |
ssh_server__permit_empty_passwords |
Boolean | См. страницу man |
ssh_server__challenge_response_authentication |
Boolean | См. страницу man |
ssh_server__keyboard_interactive_authentication |
Boolean | См. страницу man |
ssh_server__pubkey_authentication |
Boolean | См. страницу man |
ssh_server__authorized_keys |
Список строк | См. страницу man Файл AuthorizedKeysFile |
ssh_server__authorized_keys_system |
Список строк | Содержит путь к глобальному файлу авторизованных ключей |
ssh_server__authorized_keys_user |
String | Содержит путь к файлу авторизованных ключей для пользователя |
ssh_server__authorized_keys_command |
String | См. страницу man |
ssh_server__authorized_keys_command_user |
Список строк | См. страницу man |
ssh_server__permit_blacklisted_keys |
См. страницу man | |
ssh_server__rsa_authentication |
Boolean | См. страницу man |
ssh_server__rhosts_rsa_authentication |
Boolean | См. страницу man |
ssh_server__host_based_authentication |
Boolean | См. страница man |
ssh_server__host_based_uses_name_from_packet_only |
Boolean | См. сторона man |
ssh_server__ignore_user_known_hosts |
Boolean | См. страница man |
ssh_server__ignore_rhosts |
Boolean | См. страница man |
ssh_server__kerberos_authentication |
Boolean | См. страница man |
ssh_server__kerberos_get_afs_token |
Boolean | См. страница man |
ssh_server__kerberos_or_local_passwd |
Boolean | См. страница man |
ssh_server__kerberos_ticket_cleanup |
Boolean | См. страница man |
ssh_server__kerberos_use_kuserok |
Boolean | См. страница man |
ssh_server__gssapi_authentication |
Boolean | См. страница man |
ssh_server__gssapi_key_exchange |
Boolean | См. страница man |
ssh_server__gssapi_cleanup_credentials |
Boolean | См. страница man |
ssh_server__gssapi_strict_acceptor_check |
Boolean | См. страница man |
ssh_server__gssapi_store_credentials_on_rekey |
Boolean | См. страница man |
ssh_server__gssapi_enable_k5_users |
Boolean | См. страница man |
ssh_server__deny_users |
Список строк | См. страница man |
ssh_server__allow_users |
Список строк | См. страница man |
ssh_server__deny_groups |
Список строк | См. страница man |
ssh_server__allow_groups |
Список строк | См. страница man |
ssh_server__permit_root_login |
String | См. страница man |
ssh_server__login_grace_time |
String | См. страница man |
ssh_server__max_auth_tries |
Integer | См. страница man |
ssh_server__max_sessions |
Integer | См. страница man |
ssh_server__max_startups |
Специфический словарь | Этот словарь должен иметь ключи 'start', 'rate', 'full' (см. страницу man) |
ssh_server__accept_env |
Список строк | См. страница man |
ssh_server__permit_user_environment |
Boolean | См. страница man |
ssh_server__permit_user_rc |
Boolean | См. страница man |
ssh_server__permit_tty |
Boolean | См. страница man |
ssh_server__strict_modes |
Boolean | См. страница man |
ssh_server__version_addendum |
String | См. страница man |
ssh_server__banner |
String | См. страница man |
ssh_server__debian_banner |
Boolean | См. страница man |
ssh_server__print_motd |
Boolean | См. страница man |
ssh_server__print_last_log |
Boolean | См. страница man |
ssh_server__force_command |
String | См. страница man |
ssh_server__chroot_directory |
String | См. страница man |
ssh_server__client_alive_interval |
Integer | См. страница man |
ssh_server__client_alive_count_max |
Integer | См. страница man |
ssh_server__x11_forwarding |
Boolean | См. страница man |
ssh_server__x11_display_offset |
Integer | См. страница man |
ssh_server__x11_use_localhost |
Boolean | См. страница man |
ssh_server__subsystems_global/group/host |
Словарь | Соответствие названия подсистемы и команды подсистемы |
ssh_server__match_list_global/group/host |
Список условий | Настройка условий соответствия (см. ниже) |
Условия соответствия
Вы можете настроить доступные условия соответствия, используя переменные ssh_server__match_list_global/group/host
. Эти переменные принимают список словарей. Каждый словарь должен иметь следующую форму:
ssh_server__match_list_global
- match: "условия соответствия"
options: # опции, которые применяются, если "match" совпадает
- AllowUsers test # простая строковая опция
# словарь с условиями, зависящими от версии
# в зависимости от текущей версии sshd, условие с более высокой версией имеет преимущество и применяются его опции
- 8.2: AuthorizedKeysCommand /bin/true # (строковая версия)
7.6: # (списковая версия)
- AuthenticationMethods publickey
- AllowUsers root
state: absent # необязательное состояние (по умолчанию present)
Доступные условия соответствия и опции, которые вы можете применить, зависят от вашей текущей версии sshd.
Пример группы, которой разрешено только выполнять sftp, приведен ниже. Если вы хотите его включить, вы можете использовать этот блок в инвентаре:
ssh_server__match_list_global:
- '{{ ssh_server__match_group_sftponly }}'
Факты
По умолчанию локальные факты устанавливаются и используют следующие переменные:
ansible_local.ssh_server:
version_full: '7.9p1'
version_major: '7'
Пример
Плейбук
Используйте это в плейбуке следующим образом:
- hosts: all
roles:
- turgon37.ssh_server
Инвентарь
Чтобы использовать эту роль, создайте или обновите свой плейбук согласно приведенному примеру:
ssh_server__allow_agent_forwarding: false
ssh_server__allow_tcp_forwarding: false
ssh_server__allow_stream_local_forwarding: false
ssh_server__permit_tunnel: false
ssh_server__compression: true
ssh_server__allow_groups:
- ssh
- ssh-admins
ssh_server__permit_root_login: false
ssh_server__max_startups:
start: 5
rate: 80
full: 10
ssh_server__match_list_global:
- match: "LocalAddress 127.0.0.1"
options:
- AuthenticationMethods publickey,password
state: present
- match: "LocalAddress 10.0.0.1 Group ssh-admins"
options:
- AuthenticationMethods publickey password gssapi-with-mic
- match: "LocalAddress 10.0.0.1 User root"
options:
- DenyUsers
- AllowUsers root
- DenyGroups
- AllowGroups root
- 7.0: 'PermitRootLogin prohibit-password'
4.9: 'PermitRootLogin without-password'
- AuthenticationMethods publickey
- AuthorizedKeysFile /root/.ssh/authorized_keys
- AuthorizedKeysCommand /bin/true
ssh_client__known_hosts_additionals:
- '[gitlab]:7999 ssh-rsa XXXXX'
Пример конфигурации FreeIPA
ssh_server__authorized_keys: '/dev/null'
ssh_server__authorized_keys_lookup: true
ssh_server__authorized_keys_lookup_command: /usr/bin/sss_ssh_authorizedkeys
ssh_server__pubkey_authentication: true
ssh_server__gssapi_authentication: true
ansible-galaxy install Turgon37/ansible-ssh-server