Red Hat Training

A Red Hat training course is available for RHEL 8

2.4. ssh システムロールを使用した OpenSSH クライアントの設定

ssh システムロールを使用して、Ansible Playbook を実行して複数の SSH クライアントを設定できます。

注記

ssh システムロールは、SSH および SSHD 設定を変更する他のシステムロール (ID 管理 RHEL システムロールなど) とともに使用できます。設定が上書きされないようにするには、ssh ロールがドロップインディレクトリー (RHEL 8 から デフォルト) を使用していることを確認してください。

前提条件

  • 制御ノードと管理ノードを準備している
  • 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
  • 管理対象ノードへの接続に使用するアカウントには、そのノードに対する sudo 権限がある。
  • この Playbook を実行する管理対象ノードまたは管理対象ノードのグループが、Ansible インベントリーファイルにリストされている。

手順

  1. ~/ssh-clients-playbook.yml などの Playbook ファイルを次の内容で作成します。

    ---
    - hosts: all
      tasks:
      - name: "Configure ssh clients"
        include_role:
          name: rhel-system-roles.ssh
        vars:
          ssh_user: root
          ssh:
            Compression: true
            GSSAPIAuthentication: no
            ControlMaster: auto
            ControlPath: ~/.ssh/.cm%C
            Host:
              - Condition: example
                Hostname: example.com
                User: user1
          ssh_ForwardX11: no

    この Playbook は、以下の設定を使用して、マネージドノードで root ユーザーの SSH クライアント設定を行います。

    • 圧縮が有効になっている。
    • ControlMaster multiplexing が auto に設定されている。
    • <example.com> ホストに接続するための <example> エイリアスが <user1> である。
    • <example> ホストエイリアスが作成されている。これはユーザー名が <user1><example.com> ホストへの接続を表します。
    • X11 転送が無効化されている。

    必要に応じて、これらの変数は設定に合わせて変更できます。詳細は、ssh システムロール変数 を参照してください。

  2. Playbook の構文を検証します。

    # ansible-playbook --syntax-check ~/ssh-clients-playbook.yml

    このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。

  3. Playbook を実行します。

    # ansible-playbook ~/ssh-clients-playbook.yml

検証

  • テキストエディターで SSH 設定ファイルを開いて、マネージドノードが正しく設定されていることを確認します。以下に例を示します。

    # vi ~root/.ssh/config

    上記の Playbook の例の適用後に、設定ファイルの内容は以下のようになるはずです。

    # Ansible managed
    Compression yes
    ControlMaster auto
    ControlPath ~/.ssh/.cm%C
    ForwardX11 no
    GSSAPIAuthentication no
    Host example
      Hostname example.com
      User user1