Red Hat Training
A Red Hat training course is available for RHEL 8
2.2. sshd システムロールを使用した OpenSSH サーバーの設定
sshd
システムロールを使用して、Ansible Playbook を実行することで複数の SSH サーバーを設定できます。
sshd
システムロールは、SSH および SSHD 設定を変更する他のシステムロール (ID 管理 RHEL システムロールなど) とともに使用できます。設定が上書きされないようにするには、sshd
ロールがネームスペース (RHEL 8 以前のバージョン) またはドロップインディレクトリー (RHEL 9) を使用していることを確認してください。
前提条件
-
1 つ以上の 管理対象ノード (
sshd
システムロールで設定するシステム) へのアクセスおよびパーミッション。 コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
-
ansible-core
パッケージおよびrhel-system-roles
パッケージがインストールされている。
-
RHEL 8.0-8.5 では、別の Ansible リポジトリーへのアクセス権を指定されており、Ansible をベースにする自動化用の Ansible Engine 2.9 が含まれています。Ansible Engine には、ansible
、ansible-playbook
などのコマンドラインユーティリティー、docker
や podman
などのコネクター、プラグインとモジュールが多く含まれています。Ansible Engine を入手してインストールする方法については、ナレッジベースの How to download and install Red Hat Ansible Engine を参照してください。
RHEL 8.6 および 9.0 では、Ansible Core (ansible-core
パッケージとして提供) が導入されました。これには、Ansible コマンドラインユーティリティー、コマンド、およびビルトイン Ansible プラグインのセットが含まれています。RHEL は、AppStream リポジトリーを介してこのパッケージを提供し、サポート範囲は限定的です。詳細については、ナレッジベースの Scope of support for the Ansible Core package included in the RHEL 9 and RHEL 8.6 and later AppStream repositories を参照してください。
- 管理対象ノードが記載されているインベントリーファイルがある。
手順
sshd
システムロールの Playbook の例をコピーします。# cp /usr/share/doc/rhel-system-roles/sshd/example-root-login-playbook.yml path/custom-playbook.yml
以下の例のように、テキストエディターでコピーした Playbook を開きます。
# vim path/custom-playbook.yml --- - hosts: all tasks: - name: Configure sshd to prevent root and password login except from particular subnet include_role: name: rhel-system-roles.sshd vars: sshd: # root login and password login is enabled only from a particular subnet 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
ユーザーのログインのみが有効である
設定に合わせて変数を変更できます。詳細は、SSHD Server System Role variables を参照してください。
-
パスワードと
オプション: Playbook の構文を確認します。
# ansible-playbook --syntax-check path/custom-playbook.yml
インベントリーファイルで Playbook を実行します。
# ansible-playbook -i inventory_file path/custom-playbook.yml ... PLAY RECAP ************************************************** localhost : ok=12 changed=2 unreachable=0 failed=0 skipped=10 rescued=0 ignored=0
検証
SSH サーバーにログインします。
$ ssh user1@10.1.1.1
詳細は以下のようになります。
-
user1
は、SSH サーバーのユーザーです。 -
10.1.1.1
は、SSH サーバーの IP アドレスです。
-
SSH サーバーの
sshd_config
ファイルの内容を確認します。$ cat /etc/ssh/sshd_config … 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@10.1.1.1
関連情報
-
/usr/share/doc/rhel-system-roles/sshd/README.md
ファイル。 -
ansible-playbook(1)
の man ページ。