こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

公開鍵と秘密鍵

サーバ側で

ssh-keygen -t rsa

と入力すると,公開鍵と秘密鍵が生成されますが
どうしてクライアント側に秘密鍵をもたせるのでしょうか?
逆でも通信できる気がします.

あと,サーバ1台に対して,クライアントが複数いる場合に
公開鍵と秘密鍵のペアはクライアントの人数分生成するのが適切なのでしょうか?
(複数のサーバに1台のクライアントが接続する場合も,各サーバが1台のクライアントに対して公開鍵・秘密鍵を生成するのが適切なのでしょうか?)

よろしくおねがいします.

投稿日時 - 2011-04-05 11:06:49

QNo.6645773

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

お互いが正しく通信する(なりすましを防ぐ)ためにはサーバ側もクライアント
側も認証されている必要があります。

サーバ側の秘密鍵はサーバの/etc/sshd の下あたりにあるはずです。クライアン
トが初めてサーバに接続したときに、サーバ鍵の公開鍵がクライアントに送られ
ます。これを受けて、クライアント側ではその鍵を受け入れるかどうかのポップ
アップが表示されるのが普通です。(本当はあらかじめ安全な方法でクライアン
ト側に送付しておき登録することが望ましいのですが・・・)


同じようにクライアント側も認証されなければなりません。(RSA 認証の場合)
クライアントを認証するために、クライアント側で(※)生成したキーペアのう
ち、公開鍵をサーバ側に送り、サーバ側のauthorized_keys2 ファイル(OpenSSH
の場合)にその内容を記録します。

※クライアント環境にキーペア生成ツールがない場合、便宜上サーバ上でキーペ
 アを作成することもできます。


> どうしてクライアント側に秘密鍵をもたせるのでしょうか?

既にお分かりかもしれませんが、クライアント(利用者)を認証するためです。
クライアント側にパスワードを求めるアクションと同じと考えていただいて構いません。


> あと,サーバ1台に対して,クライアントが複数いる場合に
> 公開鍵と秘密鍵のペアはクライアントの人数分生成するのが適切なのでしょうか?

誰からの接続かをサーバ側で判別できないと意味がないので、そういうことにな
ります。クライアントの人数分生成するのが適切な運用です。


> (複数のサーバに1台のクライアントが接続する場合も,各サーバが1台のク
> ライアントに対して公開鍵・秘密鍵を生成するのが適切なのでしょうか?)

いいえ。使い回しできます。Aさんのサーバ1、2、3へのアクセスを許可した
いなら、Aさんの公開鍵をサーバ1、2、3で信用するように(authorized_keys2
ファイルに書く)すればよいのです。

ところで、クライアント=台数ではなく、クライアント=ユーザであるべきです。
すなわち、クライアント1台でもマルチユーザならクライアント数は1ではない
ということです。もちろん、誰もが同じ認証条件と言うことであれば1としてし
まっても問題ありません。

投稿日時 - 2011-04-05 13:04:21

補足

公開鍵と暗号鍵のwebページを見ると、送信者の方に公開鍵がわたされています。
送信者=クライアントというイメージが強いため、今回のようなことになりました。

クライアントに秘密鍵を渡す理由としては、誰もがサーバにアクセスできるのを防ぐためという認識でよろしいでしょうか?

よろしくおねがいします。

投稿日時 - 2011-04-05 21:50:23

秘密鍵・公開鍵の仕組みや役割をもう一回確認してみてください。
公開鍵で接続できるのなら、誰だって接続できてしまうのがおわかりになると思います。公開鍵=その気になれば誰でも入手可能なファイルです。

>公開鍵と秘密鍵のペアはクライアントの人数分生成するのが適切なのでしょうか?

本来秘密鍵はプライベートなものですから(ここ重要)、アカウントが異なれば違う鍵セットを使うのが原則です。
一人(1アカウント)が複数のクライアントを使用する場合は同じセットで構わないです。

同様に、一人(1アカウント)がひとつのクライアントから複数のサーバに接続する場合も1セットで構いません。(普通はそうする)

自分で秘密鍵の管理ができるなら、もちろんサーバごとのセットを使ったって構いません。

投稿日時 - 2011-04-05 11:31:02

あなたにオススメの質問