15869の参考について

  • フォーラムは新サイトへ移行しました。
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2021-4-29 13:49 | 最終変更
fujii0401  一人前   投稿数: 23
そもそもサーバとクライアントがそれぞれ相手の認証つまり、
ホスト認証とユーザ認証を公開鍵暗号方式で行う際に

サーバはユーザ承認を実施し、ユーザはサーバの公開鍵を使用した暗号化したデータをサーバに送る一方で
サーバは自身の秘密鍵を使用して復号を行いデータを照合しサーバは相手が適切なユーザかどうかを判断しているということでよろしいでしょうか?
なのでサーバは相手が適切なユーザかどうかを判断するための公開鍵を相手ユーザに渡す必要があるという認識ですがよろしいでしょうか?


サーバ認証についてなのですが、ユーザは相手サーバが適切なサーバかどうかを判断するためにサーバ認証を行い、こちらはユーザ側が作成した公開鍵をサーバの~/.ssh/authorized_keysに格納することで実現が可能とういう認識でした。

いずれにしても公開鍵を相手サーバに渡し、秘密鍵を渡すことはないという認識でしたが
こちらの正解の解説を確認する限りではサーバ側が作成した秘密鍵をクライアント側に渡しています。秘密鍵を渡すことなんてありうるのでしょうか?秘密鍵を渡すのはリスクが大きい気がします。

sshでサーバ認証を行い、適切なサーバかどうかを判断するにはユーザの公開鍵を使用して暗号化したデータをユーザ側がユーザの秘密鍵で復号化してサーバの認証を行うのではダメなのでしょうか?


以上です。
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2021-4-29 15:12 | 最終変更
yokoyama68  一人前   投稿数: 28
具体的な内容が書いていないので推測して回答いたします
間違っていたらすみません

質問者の方は以下のコマンドで生成した鍵をサーバの鍵と
思われているようです
「$ ssh-keygen -t ecdsa」
これはサーバの鍵ではなく、あるユーザがLinux上でユーザの
鍵を生成しています
クライアントとあるのは自分自身のログイン元PCなどを指しています

ログイン先サーバが既知のサーバか否かを判断するために
使用するログイン先サーバの公開鍵はユーザの~/.ssh/known_hosts に登録されます

同様のことがTERATERMでは
メニュー:[設定]>[SSH鍵生成]
からできます

つまり、鍵をLinux上で作成するか、Windows上で作成するかの
違いしかありません

作成したユーザの秘密鍵は他人に見られないように厳重に保管します
公開鍵はログイン先のサーバの~/.ssh/authorized_keys へ登録します

いくつかログインのパターンを考えてみます
1.
鍵の生成:サーバA上で
ログイン元:Windows PC (Teratermコマンド)
ログイン先:サーバA
ユーザの鍵をサーバAのssh-keygenで秘密鍵・公開鍵を生成
公開鍵はサーバAのユーザの~/.ssh/authorized_keys へ登録
秘密鍵はWindows PCへコピーし厳重に保管
※サーバA上に秘密鍵・公開鍵を残しておく必要はありません

2.
鍵の生成:Windows PC上で
ログイン元:Windows PC (Teratermコマンド)
ログイン先:サーバA
Windows PCのTeratermで秘密鍵・公開鍵を生成
公開鍵はサーバAのユーザの~/.ssh/authorized_keys へ登録
秘密鍵はWindows PC上で厳重に保管

3.
鍵の生成:サーバA上で
ログイン元:サーバA (sshコマンド)
ログイン先:サーバB
ユーザの鍵をサーバAのssh-keygenで秘密鍵・公開鍵を生成
公開鍵はサーバBのユーザの~/.ssh/authorized_keys へ登録
秘密鍵はサーバAで厳重に保管
※サーバA上に公開鍵を残しておく必要はありません

公開鍵認証は概念が難しく、説明が長くなりましたが
理解の一助になれば幸いです
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2021-4-29 18:22
fujii0401  一人前   投稿数: 23
わかりやすい説明をありがとうございます。

秘密鍵を移動させることはありうることで
それは鍵を作成する主体が自分のPCなのか通信を行う先のサーバなのかで決まるというということですね

  >フォーラム検索へ


Copyright (c) 2020 Ping-t All rights reserved.