nephosolutions.sftp_server
SFTP服务器
这是一个Ansible角色,用于配置OpenSSH服务器,实现chroot的SFTP访问。该角色的设计方式不会不必要地更改用户的OpenSSH自定义设置。相反,它仅修改所需的关键部分,并通过自定义配置块的形式添加其余配置(OpenSSH缺乏某种形式的conf.d/支持导致了这种行为)。
要求
建议在ansible.cfg
文件的ssh_connection
部分将scp_if_ssh
设置为true
,因为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
:所有SFTP用户必须属于的Unix组的名称。默认为"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
:需要SFTP访问的用户的Unix名称。group
:可选的用户主组。如果设置,将用于用户主目录的权限。否则,使用sftp_group_name
。password
:用户登录的密码哈希 - 例如openssl passwd -1 -salt salty passpass
。可以用password: ""
设置空密码。注意:似乎需要在sshd_config
中设置UsePAM yes
和PermitEmptyPassword yes
,以确保空密码正常工作。进行这些更改目前超出了此角色的范围,需另行处理。shell
:布尔值,指示用户是否应该拥有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" shell(默认为/sbin/nologin)。
注意:
sftp_nologin_shell
设置定义了当sftp用户的shell设置为False时分配给sftp_users的shell。(nologin shell确保用户只能使用SFTP,而没有其他登录权限。)此值可能根据操作系统版本有所不同。
示例剧本
---
- name: test-playbook | 测试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 nephosolutions.sftp_server
许可证
mit
下载
714
拥有者
ICT Consultancy & Services – DevOps & Cloud Architects