johanmeiring.sftp-server

SFTPサーバー

Ansible Role Software License Build Status

このAnsibleロールは、chrootされたSFTPアクセスのためにOpenSSHサーバーを設定します。このロールは、ユーザーのOpenSSHのカスタマイズを不要に変更しないように設計されています。必要な重要な部分だけを変更し、残りの設定はカスタム設定ブロックとして追加します(OpenSSHがconf.d/サポートを持たないため、この動作が必要です)。

必要条件

ansible.cfgファイルのssh_connectionセクションでscp_if_sshtrueに設定することをお勧めします。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_configUsePAM yesおよびPermitEmptyPassword yesを設定する必要があるようです。これらの変更は、このロールの範囲外で行う必要があります。
    • shell: ユーザーがシェルアクセスを持つべきかどうかを示すブール値(デフォルトはTrue)。
    • authorized: SFTPユーザー用の有効な公開鍵を含むfiles/内のファイルのオプションリスト。
    • 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ユーザーのシェルがFalseに設定されている場合に、sftp_usersに割り当てられるシェルを定義します。(nologinシェルにより、ユーザーは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 johanmeiring.sftp-server
ライセンス
mit
ダウンロード
120.6k
所有者