ユーザーの公開SSHキーを複数のホストにデプロイする最善の方法は何ですか?

ユーザーの公開SSHキーを複数のホストにデプロイする最善の方法は何ですか?

明らかに、ユーザーはSSHアクセスを必要とするすべてのホストのキーをscpできます。ただし、ホストが多い場合は時間がかかることがあります。特に公開鍵認証が設定されていない場合は、すべてのscpにパスワードを要求します。これは非常に時間がかかり、迷惑になる可能性があります。

自動マウントされたホームディレクトリを使用すると、この問題は解決されますか?これにより、各ホストは各ユーザーに同じホームディレクトリを使用するため、公開鍵は一度だけコピーできます。しかし、これは正しくないようです。誰でも私にアドバイスを与えることができますか?

ベストアンサー1

これを行うにはいくつかの方法があり、特に最新バージョンのOpenSSHを使用している場合はさらにそうです。また、キーを追加する方法だけでなく、削除する方法も必要です。鍵が損傷しているか、人々が苦情を抱いているかなどをすばやく考えてみてください。広がるのに一日かかる主な追加は迷惑です。伝播に1日かかる鍵を削除することは、深刻なセキュリティ問題です。

簡単な除去の重要性を念頭に置いて、次のいくつかの提案を提示します。

  1. ユーザーを作成する簡単な方法がすでにあるようです。たとえば、LDAPです。 LDAPは、設定オプションを使用してsshdに接続できるSSH公開鍵を保存できますAuthorizedKeysCommand。たとえば、SSSDを実行している場合、sss_ssh_authorizedkeysこれはこの目的のためです。 (たとえば、次を参照してください。SSSD認証キーのRedHatドキュメント)。鍵の追加と削除はすぐに行うことができ、最悪の場合、LDAP 伝播には通常数秒かかります。管理者の介入なしにこれを完全に自動化できます(ユーザーグループがある場合は、すでにユーザーグループがあるでしょう!)。

  2. サーバーがオフラインで認証を処理する必要がある場合(SSSDの機能を超えて)、もう1つのアプローチはOpenSSHで認証局(CA)サポートを使用することです。これは主に次のように記録されます。ssh-keygen マンページの「証明書」セクション。デフォルトでは、CAを信頼し、更新された失効リストを自動的に受信するようにサーバーのsshdを設定します。次に、そのCAを使用してクライアントの公開鍵に署名し、クライアントに証明書を提供します。この時点で、クライアントはその証明書を使用してすべてのサーバーにログインできます。クライアントの認証を取り消すには、そのクライアントをキャンセルリストに追加します(この直後のマニュアルページに記載されているように)。キーの追加はすぐに行われ、削除は失効リストを更新する頻度によって異なります。残念ながら、SSH CAにはOCSPほど良いものはありません。追加された自動化は、管理者の助けを借りずに安全に実装できます。

  3. ~/.ssh/authorized_keysすべてのサーバーが同じホームディレクトリを表示できるように提案したように、共有自動マウント(または永続マウント、自動マウントは不要)のホームディレクトリを使用できます。たくさん共有が不要な場合、$HOMEキーの追加と削除はキャッシュに応じて即時またはかなり高速です。キー管理は、管理者以外のユーザーが完全に実行できます。

    3b。ウリヒ・シュワルツユーザー認証キーファイルの場所を変更できることを示します。これは必須ではありません~/.ssh/authorized_keys。したがって、ホームディレクトリを完全に共有するオーバーヘッドなしで、すべてのユーザー認証キーファイルを含むディレクトリを共有できます。

  4. @DopeGhotiが提案したように、構成管理ツールを使用できます。ホスト、特にキーが手動で追加されたホストを忘れないように注意してください。これは、キーを追加および削除するために管理者の手動介入が必要であることを意味します。

おすすめ記事