web-dev-qa-db-ja.com

使用するマシンごとに新しいSSH秘密鍵を生成する必要がありますか?

ここがこの質問をするのにふさわしい場所であることを願っています。最近、公開鍵と秘密鍵について考えています。自分の個人秘密鍵の管理に関連するベストプラクティスは何なのかと思います。具体的には、3つの異なるコンピューター(個人用デスクトップ、仕事用デスクトップ、ラップトップ)を頻繁に使用し、他のコンピューターを頻繁に使用しない場合、秘密キーを使用する最良の方法は何ですか?

現在、使用している各コンピューターで新しいキーペアを生成し、必要に応じてそれらをauthorized_keysに追加します。これは最善の方法ですか、それとも単一のキーペアを使用して、使用するすべてのコンピュータにコピーする必要がありますか?問題は、キーペアを使用して「私」を識別したり、「Xコンピューター」を識別したりするために使用する必要があるのでしょうか。

15
Ryan

質問は少し混乱しています。私が理解しているように、PubKeyAuthenticationで設定されたSSHを介して、3台のマシンのいずれかからサーバーにログインすることを求めています。

マシンごとに1組のキーを生成する必要があります。このようにして、1つの秘密鍵が危険にさらされた場合、ログイン元の3台すべてのマシンで鍵ペアを再生成する必要はありません。実際、自分自身(サーバーに対して)を「コンピュータXのあなた」として識別したいと考えています。

PGPを使用していた場合は、一意のキーペアを使用して(他のPGPユーザーに対して)自分を「自分」として識別する必要があります。

12
dr_

各キーペアはidentityを表します。使用するマシンごとに異なるIDを設定すると便利な場合がありますが、デバイス間でIDを共有すると便利な場合もあります。

デバイスごとに個別のキーがある場合、次のようになります。

  • 通信パートナーは、すべてのデバイスの公開鍵を持っている必要があり、それが本人であることの確認が必要です(すべてのデバイスの鍵に他のすべてのデバイスの鍵で署名することにより、後者を提供できます)。これは、新しいデバイスを購入するときにかなり面倒になります。
  • 通信パートナーは、メッセージを送信するデバイスを知っているため、プライバシーが低下します。

自分のサーバーへのログインなど、プライベートな目的でのみキーを使用する場合、デバイスごとに個別のキーを使用すると、1つのキーが危険にさらされた場合でも、そのキーを取り消すだけでよく、所有しているすべてのデバイスのキーを交換してください。ただし、その代償として管理オーバーヘッドが高くなります。新しいデバイスを追加するには、古いデバイスでログインして新しい公開鍵を追加する必要があります。共有キーを使用すると、新しいデバイスにキーをコピーするだけです。

3
Philipp

これは最善の方法ですか、それとも単一のキーペアを使用して、使用するすべてのコンピュータにコピーする必要がありますか?

@ dr01がリスクを強調したので、コンピューターごとに単一のキーを使用する必要があります。

私のキーペアを使用して「私」を識別したり、「Xコンピューター」を識別したりする必要がありますか?

パスワードまたはキーベースの認証システムは、シークレットまたはキーの知識のみを識別し、ユーザーは識別しません。

認証にパスワードを使用する場合の問題は、ログインしている人が本人であることを証明できないことです。それが証明するのは、彼らがあなたのパスワードを知っていることだけです( http://www.pcmag.com/article2/0,2817,2428440,00.asp )。

したがって、キーがユーザーを識別することはありません。ユーザー(コンピューターXのユーザーまたはコンピューターYのユーザー)がキーを持っているかどうかを識別するだけです。

1
Dr. mattle

また、ハードウェアデバイスの使用についても検討してください。 YubiKey NEOはGPGキーを保存でき、gpg-agentはそれを使用して、通常の〜/ identityファイルとまったく同じように、任意のサーバーに対してそれを認証できます。

これを設定するための gpgkey2sshとgpg-agentを使用するためのチュートリアル があります。

1
Jeff Ferland