johanmeiring.sftp-server
SFTP服务器
这是一个用于配置OpenSSH服务器以实现chroot SFTP访问的Ansible角色。该角色设计成不会不必要地改变用户的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_users在其shell设置为False时分配的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 johanmeiring.sftp-server
许可证
mit
下载
120.6k
拥有者