ssh パスワード認証の仕組み

sshのパスワード認証のはなし。

共通鍵→お互い同じものを使って暗号化復号化するための鍵
↑セッションごとに違う。

クライアント「やあ、userだけど、接続したいんだけど」
サーバ「お、お前初見だな、公開鍵もってけ」
クライアント「あ、どもっす」(公開鍵を known_hosts に登録)

〜〜〜 ここから 鍵交換 〜〜〜

クライアント「んでは共通鍵作りますよ」
サーバ「うむ、じゃあ共通鍵の材料送るわ」
クライアント「材料をちょっといじるっす。おくるっす」
サーバ「うむ、じゃあ共通鍵つくるわ。作った」
サーバ「さらに加工した材料送るわ。あと共通鍵が正しいかチェックするやつも」
クライアント「うぃっす(材料を元に共通鍵作成)。おっけーMy共通鍵ゲットー!」

〜〜〜 ここまで 鍵交換 〜〜〜

クライアント「ユーザ認証させてくださいよー。あ、この会話自体も共通鍵で暗号化してあるよ」
クライアント「お、データ来た。共通鍵で複合化しようっと。認証したいんか」
サーバ「んでパスワードは?と、暗号化して送ろう」
クライアント「パスワードね、パスワードはpasswordですよ、暗号化して送る!」
サーバ「データを複合化してっと。お、パスワードあってんじゃん。よし、通信してあげるよ」

これ以降の通信は共通鍵を使って行われましたとさ。

てな感じです。