silverlogic.sshd
OpenSSHサーバー
この役割はOpenSSHデーモンを設定します。以下のことができます:
- デフォルトでは、通常のOSの設定でSSHデーモンを構成します。
- 様々なUN*X系のディストリビューションで動作します。
- 辞書または単純な変数で構成できます。
- Matchセットをサポートします。
- すべてのsshd_configオプションをサポートします。テンプレートはプログラムで生成されます。 (詳しくはmeta/make_option_listを参照してください)
- sshdを再読み込みする前にsshd_configをテストします。
警告 この役割の誤設定は、サーバーからロックアウトされる可能性があります! 本番環境で使用する前に、あなたの設定とユーザーの設定との相互作用をテストしてください。
警告 Digital Oceanでは、DebianとUbuntuでSSHによるパスワードを使ったrootログインが許可されています。これはこのモジュールによって設定されるデフォルトではありません - PermitRootLogin without-password
を設定し、SSHキーによるアクセスは可能ですが、単純なパスワードによるアクセスはできません。この機能が必要な場合は、そのホストに対してssh_PermitRootLogin yes
を設定してください。
要件
テスト済みの環境:
- Ubuntu precise, trusty
- Debian wheezy, jessie
- FreeBSD 10.1
- EL 6,7派生ディストリビューション
- Fedora 22, 23
- OpenBSD 6.0
他のフレーバーでも動作する可能性があり、適切なvars/ファイルによるさらなるサポートが歓迎されます。
役割の変数
設定しない場合、この役割はOSのデフォルトに合致したsshd_configを提供しますが、コメントや順序が異なります。
- sshd_skip_defaults
Trueに設定すると、デフォルト値を適用しません。つまり、sshd辞書またはsshd_Key変数を使用して完全な設定デフォルトを持っている必要があります。デフォルトはFalseです。
- sshd_manage_service
Falseに設定すると、サービス/デーモンにはまったく手を触れません。つまり、ブート時に有効にしたり、サービスを開始または再読み込みしようとしません。デフォルトはTrueですが、Dockerコンテナ内で実行している場合は異なります(ビルドフェーズ中にansibleが使用されると想定されています)。
- sshd_allow_reload
Falseに設定すると、変更時にsshdが再読み込みされません。これはトラブルシューティングに役立ちます。変更された設定を適用したい場合は、手動でsshdを再読み込みする必要があります。デフォルトはsshd_manage_service
と同じ値です。
- sshd_authorized_principals_file
認証済みのプリンシパルファイルが保存されるパス。sshd_authorized_principals
も設定されている場合のみ使用されます。
あなたのsshd_AuthorizedPrincipalsFile設定を設定するために使用することができます。例:sshd_AuthorizedPrincipalsFile: '{{ sshd_authorized_principals_file }}'
- sshd_authorized_principals
どのプリンシパルがどのユーザーでログインできるかを指定するリストの辞書。辞書の各キーはユーザーの名前です。そのユーザーでログインが許可されているプリンシパルのリストが辞書の値です。例:
sshd_authorized_principals:
root:
- root-everywhere
- bobby
- ryan
- sshd_trusted_user_ca_keys_file
信頼されたユーザーCAキーのファイルが保存されるパス。sshd_trusted_user_ca_keys
も設定されている場合のみ使用されます。
あなたのsshd_TrustedUserCAKeys設定を設定するために使用することができます。例:sshd_TrustedUserCAKeys: '{{ sshd_trusted_user_ca_keys }}'
- sshd_trusted_user_ca_keys
信頼するCAの公開鍵のリストです。
- sshd
構成を含む辞書。例:
sshd:
Compression: delayed
ListenAddress:
- 0.0.0.0
- ssh_...
辞書の代わりに単純な変数を使用できます。単純な値は辞書の値を上書きします。例:
sshd_Compression: off
すべての場合において、ブール値はsshd構成で「yes」と「no」として正しくレンダリングされます。 リストはマルチラインの設定項目に使用できます。例:
sshd_ListenAddress:
- 0.0.0.0
- '::'
レンダリング結果は以下のようになります:
ListenAddress 0.0.0.0
ListenAddress ::
- sshd_match
マッチセクション用の辞書のリスト。例のプレイブックを参照してください。
- sshd_match_1からsshd_match_9まで
マッチセクション用の辞書のリストまたは辞書。
依存関係
なし
例のプレイブック
危険! この例は、この役割が提供する設定の範囲を示すためのものです。実行すると、サーバーへのSSHアクセスが失われる可能性があります!
---
- hosts: all
vars:
sshd_skip_defaults: true
sshd:
Compression: true
ListenAddress:
- "0.0.0.0"
- "::"
GSSAPIAuthentication: no
Match:
- Condition: "Group user"
GSSAPIAuthentication: yes
sshd_UsePrivilegeSeparation: no
sshd_match:
- Condition: "Group xusers"
X11Forwarding: yes
roles:
- role: willshersystems.sshd
結果は次のようになります:
# Ansible管理:...
Compression yes
GSSAPIAuthentication no
UsePrivilegeSeparation no
Match Group user
GSSAPIAuthentication yes
Match Group xusers
X11Forwarding yes
テンプレート生成
sshd_config.j2テンプレートは、meta内のスクリプトによってプログラム生成されます。新しいオプションはoptions_bodyまたはoptions_matchに追加する必要があります。
テンプレートを再生成するには、meta/ディレクトリ内から次のコマンドを実行します:
./make_option_list >../templates/sshd_config.j2
ライセンス
LGPLv3
著者
Matt Willsher matt@willsher.systems
© 2014,2015 Willsher Systems Ltd.