26.2. sshd RHEL システムロールを使用した OpenSSH サーバーの設定
sshd
システムロールを使用して、Ansible Playbook を実行し、複数の SSH サーバーを設定できます。
sshd
システムロールは、SSH および SSHD 設定を変更する他のシステムロール (ID 管理 RHEL システムロールなど) とともに使用できます。設定が上書きされないようにするには、sshd
ロールがネームスペース (RHEL 8 以前のバージョン) またはドロップインディレクトリー (RHEL 9) を使用していることを確認してください。
前提条件
- コントロールノードと管理対象ノードを準備している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo
権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml
) を作成します。--- - name: SSH server configuration hosts: managed-node-01.example.com tasks: - name: Configure sshd to prevent root and password login except from particular subnet ansible.builtin.include_role: name: rhel-system-roles.sshd vars: sshd: PermitRootLogin: no PasswordAuthentication: no Match: - Condition: "Address 192.0.2.0/24" PermitRootLogin: yes PasswordAuthentication: yes
Playbook は、以下のように、マネージドノードを SSH サーバーとして設定します。
-
パスワードと
root
ユーザーのログインが無効である -
192.0.2.0/24
のサブネットからのパスワードおよびroot
ユーザーのログインのみが有効である
-
パスワードと
Playbook の構文を検証します。
$ ansible-playbook --syntax-check ~/playbook.yml
このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
$ ansible-playbook ~/playbook.yml
検証
SSH サーバーにログインします。
$ ssh <username>@<ssh_server>
SSH サーバー上の
sshd_config
ファイルの内容を確認します。$ cat /etc/ssh/sshd_config.d/00-ansible_system_role.conf # # Ansible managed # PasswordAuthentication no PermitRootLogin no Match Address 192.0.2.0/24 PasswordAuthentication yes PermitRootLogin yes
192.0.2.0/24
サブネットから root としてサーバーに接続できることを確認します。IP アドレスを確認します。
$ hostname -I 192.0.2.1
IP アドレスが
192.0.2.1
-192.0.2.254
範囲にある場合は、サーバーに接続できます。root
でサーバーに接続します。$ ssh root@<ssh_server>
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.sshd/README.md
ファイル -
/usr/share/doc/rhel-system-roles/sshd/
ディレクトリー