sftp-server
SFTP-сервер
Эта роль Ansible настраивает сервер OpenSSH для доступа к SFTP с использованием chroot. Роль создана так, чтобы не менять настройки OpenSSH пользователя без необходимости. Вместо этого она изменяет только важные параметры и добавляет остальные настройки в виде специального блока конфигурации (отсутствие поддержки конфигурации в формате conf.d/ в OpenSSH вынуждает к такому поведению).
Требования
Рекомендуется установить scp_if_ssh
в значение true
в разделе ssh_connection
вашего файла ansible.cfg
, так как Ansible по умолчанию использует SFTP для передачи файлов, и с помощью этой роли вы можете случайно заблокировать доступ к SFTP на вашем сервере. Резервная копия SCP продолжит работать. Пример конфигурации:
; ansible.cfg
...
[ssh_connection]
scp_if_ssh=True
Кроме того, требуется только сам Ansible. Тестировалось с версиями Ansible 2.0.2.0, 2.2.2.0 и 2.3.0.0. Работает на Ubuntu 14.04 и 16.04, не тестировалось на других версиях. Некоторая работа была проведена по поддержке RHEL, но это в настоящее время официально не поддерживается оригинальным автором (дополнительные вклады, конечно, приветствуются ;-)
Переменные роли
Следующие переменные роли имеют отношение:
sftp_home_partition
: Раздел, где будут находиться домашние директории пользователей SFTP. По умолчанию "/home".sftp_group_name
: Имя группы Unix, к которой должны принадлежать все пользователи SFTP. По умолчанию "sftpusers".sftp_directories
: Список директорий, которые необходимо создать автоматически по умолчанию для всех пользователей SFTP. По умолчанию пустой список (т.е. "[]").- Значения могут быть простыми строками или словарями, содержащими пары ключ/значение
name
и (опционально)mode
.
- Значения могут быть простыми строками или словарями, содержащими пары ключ/значение
sftp_start_directory
: Директория, которая должна быть частью значений sftp_directories и является начальной директорией нового SFTP-соединения. По умолчанию отключена с пустым строковым значением.sftp_allow_passwords
: Разрешать ли аутентификацию по паролю для SFTP. По умолчанию False.sftp_enable_selinux_support
: Явно включить поддержку SELinux или нет. По умолчанию False.sftp_enable_logging
: Включить ведение журнала. Журналы аутентификации будут записываться в/var/log/sftp/auth.log
, а журналы активности SFTP будут записываться в/var/log/sftp/verbose.log
. По умолчанию False.sftp_users
: Список пользователей, в виде карты, содержащей следующие элементы:name
: Имя Unix пользователя, которому нужен доступ к SFTP.group
: Необязательная основная группа пользователя. Если установлена, будет использоваться для разрешения на домашнюю директорию пользователя. В противном случае используетсяsftp_group_name
.password
: Хэш пароля для входа пользователя - т.е.openssl passwd -1 -salt salty passpass
. Пустые пароли можно установить с помощьюpassword: ""
. ПРИМЕЧАНИЕ: Похоже, что для правильной работы пустых паролей необходимо установитьUsePAM yes
иPermitEmptyPassword yes
вsshd_config
. Внесение этих изменений выходит за рамки данной роли и должно быть сделано отдельно.shell
: Булевое значение, указывающее, должен ли пользователь иметь доступ к оболочке (по умолчаниюTrue
).authorized
: Необязательный список файлов, размещенных вfiles/
, которые содержат действительные открытые ключи для SFTP пользователя.sftp_directories
: Список директорий, которые необходимо создать индивидуально для пользователя SFTP. По умолчанию пустой список (т.е. "[]").append
: Булевое значение для добавленияsftp_group_name
в группы пользователей (если есть), вместо установки (по умолчаниюFalse
).mode
: Режим домашней директории пользователя (по умолчанию0750
).skeleton
: Необязательная директория-скелет для домашней директории (например: /dev/null). По умолчанию системные настройки.home
: Необязательная домашняя директория (например: /home/bob). По умолчаниюsftp_home_partition/name
.
sftp_nologin_shell
: Оболочка пользователя с "nologin". (по умолчанию /sbin/nologin.)
Заметки:
- Настройка
sftp_nologin_shell
определяет оболочку, назначаемую пользователям sftp_users, когда оболочка пользователя SFTP установлена в значение False. (Оболочка nologin гарантирует, что пользователь может использовать только SFTP и не имеет других прав на вход.) Это значение может различаться в зависимости от версии операционной системы.
Пример плейбука
---
- name: тест-плейбук | Тест роли sftp-server
hosts: all
become: yes
become_user: root
vars:
- sftp_users:
- name: peter
password: "$1$salty$li5TXAa2G6oxHTDkqx3Dz/" # passpass
shell: False
sftp_directories:
- directory_only_for_peter1
- directory_only_for_peter2
- name: sally
password: ""
authorized: [sally.pub]
home: /var/tmp/sally
append: True
- sftp_directories:
- imports
- exports
- { name: public, mode: 755 }
- other
roles:
- sftp-server
Лицензия
Эта роль Ansible распространяется под лицензией MIT. Более подробную информацию можно найти в файле LICENSE.
Пожертвования
Пожертвования очень приветствуются и могут быть сделаны на следующие адреса:
- BTC: 1AWHJcUBha35FnuuWat9urRW2FNc4ftztv
- ETH: 0xAF1Aac4c40446F4C46e55614F14d9b32d712ECBc
ansible-galaxy install johanmeiring/ansible-sftp