1.8.2. sshd RHEL システムロールを使用した OpenSSH サーバーの設定
sshd RHEL システムロールを使用すると、セキュアなリモートアクセスを実現するために、複数の OpenSSH サーバーを設定できます。
このロールは、具体的には次のような機能を提供することで、リモートユーザーにとってセキュアな通信環境を確保します。
- リモートクライアントからの SSH 接続の管理
- 認証情報の検証
- セキュアなデータ転送とコマンド実行
sshd RHEL システムロールは、SSHD 設定を変更する他の RHEL システムロール (たとえば、Red Hat Enterprise Linux RHEL システムロールの Identity Management など) と併用できます。設定が上書きされないように、sshd RHEL システムロールが名前空間 (RHEL 8 以前のバージョン) またはドロップインディレクトリー (RHEL 9) を使用することを確認してください。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
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: redhat.rhel_system_roles.sshd vars: sshd_config: PermitRootLogin: no PasswordAuthentication: no Match: - Condition: "Address 192.0.2.0/24" PermitRootLogin: yes PasswordAuthentication: yesサンプル Playbook で指定されている設定は次のとおりです。
PasswordAuthentication: yes|no-
ユーザー名とパスワードの組み合わせを使用するクライアントからの認証を OpenSSH サーバー (
sshd) が受け入れるかどうかを制御します。 Match:-
この Match ブロックは、サブネット
192.0.2.0/24からの接続に限り、rootユーザーがパスワードを使用してログインすることを許可します。
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 サーバーにログインします。
$ 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 yes192.0.2.0/24サブネットから root としてサーバーに接続できることを確認します。IP アドレスを確認します。
$ hostname -I 192.0.2.1IP アドレスが
192.0.2.1-192.0.2.254範囲にある場合は、サーバーに接続できます。rootでサーバーに接続します。$ ssh root@<ssh_server>