25.3. 非排他的設定に sshd RHEL システムロールを使用する
デフォルトでは、sshd RHEL システムロールを適用すると、設定全体が上書きされます。これは、たとえば別の RHEL システムロールや Playbook などを使用して、以前に設定を調整している場合に問題を生じる可能性があります。他のオプションを維持しながら、選択した設定オプションにのみ sshd に問題を生じるシステムロールを適用するには、非排他的設定を使用できます。
非排他的設定は、以下を使用して適用できます。
- RHEL 8 以前では、設定スニペットを使用します。
-
RHEL 9 以降では、ドロップインディレクトリー内のファイルを使用します。デフォルトの設定ファイルは、
/etc/ssh/sshd_config.d/00-ansible_system_role.confとしてドロップインディレクトリーにすでに配置されています。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。RHEL 8 以前を実行する管理対象ノードの場合:
--- - name: Non-exclusive sshd configuration hosts: managed-node-01.example.com tasks: - name: Configure SSHD to accept environment variables ansible.builtin.include_role: name: redhat.rhel_system_roles.sshd vars: sshd_config_namespace: <my-application> sshd_config: # Environment variables to accept AcceptEnv: LANG LS_COLORS EDITORRHEL 9 以降を実行する管理対象ノードの場合:
- name: Non-exclusive sshd configuration hosts: managed-node-01.example.com tasks: - name: Configure sshd to accept environment variables ansible.builtin.include_role: name: redhat.rhel_system_roles.sshd vars: sshd_config_file: /etc/ssh/sshd_config.d/<42-my-application>.conf sshd_config: # Environment variables to accept AcceptEnv: LANG LS_COLORS EDITORサンプル Playbook で指定されている設定は次のとおりです。
sshd_config_namespace: <my-application>- このロールは、Playbook で指定した設定を、特定の名前空間配下にある既存の設定ファイルの設定スニペットに配置します。異なるコンテキストからロールを実行する場合は、異なる名前空間を選択する必要があります。
sshd_config_file: /etc/ssh/sshd_config.d/<42-my-application>.conf-
sshd_config_file変数では、sshdシステムロールによる設定オプションの書き込み先の.confファイルを定義します。設定ファイルが適用される順序を指定するには、2 桁の接頭辞 (例:42-) を使用します。 AcceptEnv:OpenSSH サーバー (
sshd) がクライアントから受け入れる環境変数を制御します。-
LANG: 言語とロケールの設定を定義します。 -
LS_COLORS: ターミナルのlsコマンドの表示カラースキームを定義します。 -
EDITOR: エディターを開く必要があるコマンドラインプログラムのデフォルトのテキストエディターを指定します。
-
Playbook で使用されるロール変数と OpenSSH 設定オプションの詳細は、
/usr/share/ansible/roles/rhel-system-roles.sshd/README.mdファイルと、コントロールノードのsshd_config(5)man ページを参照してください。
Playbook の構文を検証します。
$ ansible-playbook --syntax-check ~/playbook.ymlこのコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
$ ansible-playbook ~/playbook.yml
検証
SSH サーバーの設定を確認します。
RHEL 8 以前を実行する管理対象ノードの場合:
# cat /etc/ssh/sshd_config ... # BEGIN sshd system role managed block: namespace <my-application> Match all AcceptEnv LANG LS_COLORS EDITOR # END sshd system role managed block: namespace <my-application>RHEL 9 以降を実行する管理対象ノードの場合:
# cat /etc/ssh/sshd_config.d/42-my-application.conf # Ansible managed # AcceptEnv LANG LS_COLORS EDITOR