SSH鍵管理に関する推奨事項

SSH鍵管理に関する推奨事項

複数のSSHキーペアを管理するためのベストプラクティスは何だと思いますか?

私は自宅と職場の両方で複数のシステムに接続するためにSSHを使用しています。現在、私は職場や家庭のシステムで使用するかなり小さく管理可能なキーペアのコレクションを持っています。混乱を避けるために名前付きキーペアを生成するスクリプトがあります。

私のホームネットワークは、私のラップトップ(ubuntu)、2台のデスクトップ(ubuntu / fedoraデュアルブート、fedora / windowsデュアルブート)、およびメディアシステム(ubuntu)で構成されています。職場には、個人用ノートブック(在宅勤務用)、デスクトップ(fedora)、本番システム(RHEL)、Windows(sigh)、および仮想マシン(fedora)がインストールされたノートパソコンがあります。今まではそんなに良くなった。

(私は自分のホームキーペアを自分のワークシステムに置いたり、自分のワークキーペアを自分のホームシステムに置いたりすることに興味がありません。実稼働コンピュータに存在する必要があります。

しかし、100以上のシステムで構成された大規模なクラスターであるHadoopが登場し、より多くのユーザーとより多くのキーペアが含まれ、より複雑になりました。これでキーを管理する必要があります。

(明確に説明する必要があります。私はHadoopクラスタをデプロイするクライアントをターゲットにコンサルティングするソフトウェア開発者です。彼らはキーを管理する必要があります。クラスタにアクセスする多くの人は公開キーをシステムに配置する必要があります。常駐Linux専門家、彼らは私に助けを求めています。

リモートシステムに公開鍵を公開する必要がある場合、すべての「方法」Webページは上書き(>)(既存のキーを破棄)または追加(>>)(大丈夫です。既存のキーを保持)を提案します。しかし、私の考えでは、各公開鍵をターゲットマシンに別々に保存して結合する方が良いと思います。アドバイスを求めています。

多数のキーを管理するために見つけたベストプラクティスは何ですか?

ありがとうございます!


編集:一方では、特定のユーザーに対して対応するCRUD(作成、読み取り、更新、削除/無効化)を使用して、多くのシステムにキーを配置する必要があります。つまり、どのキーがどのユーザーに属しているかを識別できる必要があります。

答え1

通常、クライアントコンピュータごとに少なくとも2つのキーがあってはいけません(「一般的に」ハイライト)。あなたの質問を正しく理解しているかどうかはわかりませんが、各リモートシステムに別々のキーがあると言っても間違っています。

SSH は公開鍵暗号化を使用します。リモートシステムにインストールする鍵は公開鍵であり、その鍵を他の場所で再利用しても何の害もありません。これは、パーソナルシステムで保護して保管する必要がある秘密鍵です。

秘密鍵を共有するよりも1つのクライアントにのみ置くのも良い考えです。これにより、クライアントが破損した場合にキーを取り消すことができます。


今、何百ものシステムに公開鍵を送信する方法を尋ねる場合は、いくつかの方法があります。

最も一般的な方法は、共有ホームディレクトリを使用することです。すべてのシステムに対してNFS(または他のネットワークファイルシステム)をマウント(または自動的にマウント)します。

もう一つのアプローチは、SSHの新機能を活用することです。これは名前付き設定ディレクティブですAuthorizedKeysCommand。デフォルトでは、これは公開鍵を見つける必要があるたびに sshd が実行するコマンドです。このコマンドは、照会しているユーザーの公開鍵をSTDOUTに書き込みます。これは、自宅にインストールされていないが中央認証サーバーがまだある場合に主に使用されます(リバティIPAこの点を利用しました)。

もちろん、/home中央サーバーでcronジョブをrsyncするなど、他の操作も実行できます。しかし、これは一般的なことではありません。

答え2

リモートシステムに公開鍵を公開する必要がある場合、すべての「方法」Webページは上書き(>)(既存のキーを破棄)または追加(>>)(大丈夫です。既存のキーを保持)を提案します。しかし、私の考えでは、各公開鍵をターゲットマシンに別々に保存して結合する方が良いと思います。アドバイスを求めています。 ㅏ

公開鍵を保存しても効果はありません。両方.ssh/authorized_keysそして別のファイルにあります。

*authorized_keys*ファイルに保存されている実際のキーを見ると、キーソースについて人間が読めるメタ情報がすでに含まれていることがわかります。たとえば、公開鍵にはuser@foo通常、次の項目があります。

ssh-rsa AAAAB3Nza...LiPk== [email protected]

したがって、特定のキー(特定のユーザーに添付)を* authorized_keys *ファイルから非常に簡単に確認/抽出/削除できます。

ユーザーIDは実際には自由形式の「説明」フィールドなので、特定のキーを識別するために必要と思われる情報を入力できます。

それにもかかわらず、リモートリソースにアクセスする必要がある「ユーザー」に対してのみキーペアを生成する必要があります。すべてのhadoopホストから他のすべてのhadoopホストにログインする必要はありません。代わりに、すべてのhadoopホストにアクセスする必要があるいくつかの管理対象コンピュータがあります。管理システムごとに1つの鍵ペアのみが必要で、各公開鍵はすべてのhadoopホストにインストールされます。

答え3

最近のOpenSSHでは、LDAPからSSHキーを取得できます。 「AuthorizedKeysCommand」を参照してください。sshd_configマンページ。個人的には、私は鍵ではなくOpenSSH証明書を好みます。http://blog.habets.pp.se/2011/07/OpenSSH-certificates。すべての設定マネージャ(cfengine、puppet、Chef、saltなど)を使用してキーを管理できます。

答え4

実装するのが非常に簡単で、複数のユーザーを追加するための柔軟性の高い別の方法は、使用することです。 https://userify.com/

これにより、さまざまなサーバーグループを定義し、これらのサーバーのさまざまなユーザーのキーを有効または無効にできます。

インストールと管理は非常に簡単です。

関連情報