47.4. ホストの SSH 公開鍵の管理

OpenSSH は公開鍵を使用してホストを認証します。あるマシンが別のマシンにアクセスを試みてキーのペアを提示します。ホストの初回認証時には、ターゲットマシンの管理者は、この要求を手動で認証する必要があります。次に、マシンはホストの公開鍵を known_hosts ファイルに保存します。リモートのマシンがターゲットマシンにアクセスを再度試みると、ターゲットマシンは known_hosts ファイルをチェックして、認証済みホストに自動的にアクセスを許可します。

47.4.1. IdM Web UI を使用したホストの SSH 鍵のアップロード

Identity Management を使用すると、SSH 公開鍵をホストエントリーにアップロードできます。OpenSSH は公開鍵を使用してホストを認証します。

前提条件

  • IdM Web UI、またはユーザー管理者ロールを管理する管理者権限

手順

  1. ホストの鍵は ~/.ssh/known_hosts ファイルから取得できます。以下に例を示します。

    server.example.com,1.2.3.4 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApvjBvSFSkTU0WQW4eOweeo0DZZ08F9Ud21xlLy6FOhzwpXFGIyxvXZ52+siHBHbbqGL5+14N7UvElruyslIHx9LYUR/pPKSMXCGyboLy5aTNl5OQ5EHwrhVnFDIKXkvp45945R7SKYCUtRumm0Iw6wq0XD4o+ILeVbV3wmcB1bXs36ZvC/M6riefn9PcJmh6vNCvIsbMY6S+FhkWUTTiOXJjUDYRLlwM273FfWhzHK+SSQXeBp/zIn1gFvJhSZMRi9HZpDoqxLbBB9QIdIw6U4MIjNmKsSI/ASpkFm2GuQ7ZK9KuMItY2AoCuIRmRAdF8iYNHBTXNfFurGogXwRDjQ==

    ホスト鍵を生成することもできます。SSH 鍵の生成 を参照してください。

  2. 公開鍵をキーファイルからコピーします。完全な鍵エントリーは、hostname,IP type key== の形式です。key== のみが必要ですが、エントリー全体を保存することもできます。エントリーの全要素を使用するには、エントリーを再編成して、順番が type key== [host name,IP] になるように設定します。

    cat /home/user/.ssh/host_keys.pub
    ssh-rsa AAAAB3NzaC1yc2E...tJG1PK2Mq++wQ== server.example.com,1.2.3.4
  3. IdM Web UI にログインします。
  4. Identity > Hosts タブに移動します。
  5. 編集するホスト名をクリックします。
  6. Host Settings セクションで、SSH 公開鍵の Add ボタンをクリックします。
  7. ホストの公開鍵を SSH public key フィールドに貼り付けます。
  8. Set をクリックします。
  9. IdM Web UI ウィンドウの上部にある Save をクリックします。

検証

  • Hosts Settings セクションで、鍵が SSH public keys の下にリストされていることを確認します。

47.4.2. IdM CLI を使用したホストの SSH 鍵のアップロード

Identity Management を使用すると、SSH 公開鍵をホストエントリーにアップロードできます。OpenSSH は公開鍵を使用してホストを認証します。ホスト SSH 鍵は、host-add を使用してホストを作成するときか、エントリーを後で修正するときに、IdM のホストエントリーに追加されます。

インストールスクリプトで SSH サービスが明示的に無効にされなければ、ipa-client-install コマンドで RSA と DSA ホスト鍵が作成されます。

前提条件

  • IdM、またはユーザー管理者ロールを管理する管理者権限

手順

  1. --sshpubkey オプションを指定して host-mod コマンドを実行し、base64 にエンコードされた公開鍵をホストエントリーにアップロードします。

    ホスト鍵を追加すると、ホストの DNS Secure Shell フィンガープリント (SSHFP) レコードが変更されるため、--updatedns オプションを使用してホストの DNS エントリーを更新します。以下に例を示します。

    $ ipa host-mod --sshpubkey="ssh-rsa RjlzYQo==" --updatedns host1.example.com

    実際のキーは通常、等号 (=) で終わりますが、より長いです。

  2. 複数の鍵をアップロードするには、複数の --sshpubkey コマンドラインパラメーターを入力します。

    --sshpubkey="RjlzYQo==" --sshpubkey="ZEt0TAo=="
    注記

    ホストには複数の公開鍵を指定できます。

  3. ホスト鍵をアップロードしたら、OpenSSH サービスのキャッシュを提供するように SSSD を設定 で説明するように、Identity Management を ID ドメインの 1 つとして使用するよう SSSD を設定し、OpenSSH がホスト鍵管理に SSSD ツールを使用するよう設定します。

検証

  • ipa host-show コマンドを実行して、SSH 公開鍵が指定されたホストに関連付けられていることを確認します。

    $ ipa host-show client.ipa.test
    ...
    SSH public key fingerprint: SHA256:qGaqTZM60YPFTngFX0PtNPCKbIuudwf1D2LqmDeOcuA
                                  client@IPA.TEST (ssh-rsa)
    ...

47.4.3. IdM Web UI を使用したホストの SSH 鍵の削除

ホスト鍵は、期限切れになるか、有効でなくなったら削除できます。IdM Web UI を使用して個々のホスト鍵を削除するには、以下の手順に従ってください。

前提条件

  • IdM Web UI、またはホスト管理者ロールを管理する管理者権限

手順

  1. IdM Web UI にログインします。
  2. Identity > Hosts タブに移動します。
  3. 編集するホスト名をクリックします。
  4. Host Settings セクションで、削除する SSH 公開鍵の横にある Delete をクリックします。
  5. ページ上部にある Save をクリックします。

検証

  • Host Settings セクションで、鍵が SSH public keys の下にリストされていないことを確認します。

47.4.4. IdM CLI を使用したホストの SSH 鍵の削除

ホスト鍵は、期限切れになるか、有効でなくなったら削除できます。IdM CLI を使用して個々のホスト鍵を削除するには、以下の手順に従います。

前提条件

  • IdM CLI、またはホスト管理者ロールを管理する管理者権限

手順

  • ホストアカウントに割り当てられたすべての SSH 鍵を削除するには、鍵を指定せずに --sshpubkey オプションを ipa host-mod コマンドに追加します。

    $ kinit admin
    $ ipa host-mod --sshpubkey= --updatedns host1.example.com

    --updatedns オプションを使用してホストの DNS エントリーを更新することを推奨します。

アップロードされた鍵にタイプが含まれていない場合、IdM は鍵から自動的に鍵タイプを決定します。

検証

  • ipa host-show コマンドを実行して、SSH 公開鍵が指定されたホストに関連付けられていないことを確認します。

    ipa host-show client.ipa.test
      Host name: client.ipa.test
      Platform: x86_64
      Operating system: 4.18.0-240.el8.x86_64
      Principal name: host/client.ipa.test@IPA.TEST
      Principal alias: host/client.ipa.test@IPA.TEST
      Password: False
      Member of host-groups: ipaservers
      Roles: helpdesk
      Member of netgroups: test
      Member of Sudo rule: test2
      Member of HBAC rule: test
      Keytab: True
      Managed by: client.ipa.test, server.ipa.test
      Users allowed to retrieve keytab: user1, user2, user3