sshd(8) のマニュアルページから:
OpenSSH SSHデーモンはSSHプロトコル2のみをサポートします。各ホストには、ホストを識別するホスト固有のキーがあります。クライアントが接続されるたびに、デーモンはパブリックホストキーで応答します。クライアントは、ホストキーを独自のデータベースと比較して変更されていないことを確認します。順方向の秘密は、Diffie-Hellmanキー契約を通じて提供されます。この鍵ネゴシエーションにより、共有セッション鍵が生成されます。セッションの残りの部分は、対称パスワードを使用して暗号化されます。
(私が強調する)
誰かが認証プロセスがどのように機能するかを説明できますか?私の考えでは:
- 各ホストには独自のSSHキー(公開とプライベート)があります。
- クライアントがサーバーに接続すると、sshdデーモンはクライアントに公開鍵を提供します。
- それから顧客は私が理解していないことをしなさい
- その後、残りのセッションは暗号化されます。
私は正しいですか?誰かがそれが何を意味するのかを詳しく説明できますか?クライアントは、ホストキーを独自のデータベースと比較して変更されていないことを確認します。どのように?
答え1
クライアントがホストキーを独自のデータベースと比較して変更されていないことを確認することが何を意味するのかを詳しく説明できますか?
(以前に未知の)マシンを入力すると、次のクエリssh
が表示されます(例:ECDSAタイプキー)。
ssh user@newhost:
The authenticity of host 'newhost (<IP-address>)' can't be established.
ECDSA key fingerprint is SHA256:<fingerprint>.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
答えるときyes
:
Warning: Permanently added 'newhost,<fingerpint>' (ECDSA) to the list of known hosts.
これで、ホストの指紋がファイル~/.ssh/known_hosts
(デフォルトの場所)に追加されました。
将来の接続では、このフィンガープリントを使用してホストを一意に識別できるため、会話は発生しません。ただし、ホストがこれを実行できない場合は、ホストの変更に関する警告が表示されます。これはssh
、クライアントとして警告されない限り、誰もホストをキャプチャしたりドメインをリダイレクトしたりするなどの操作を実行できないようにするためです。
これを手動で一度受け入れたウェブサイト証明書と比較してください。変更すると、ウェブサイトは安全ではないとマークされます。