nephosolutions.sftp_server

SFTP服务器

Ansible角色 软件许可证 构建状态

这是一个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 yesPermitEmptyPassword 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
关于项目

Setup chrooted SFTP service on top of OpenSSH

安装
ansible-galaxy install nephosolutions.sftp_server
许可证
mit
下载
714
拥有者
ICT Consultancy & Services – DevOps & Cloud Architects