authorized_keys
サーバーとクライアント間のSSH通信では、クライアントは秘密鍵を介して認証します。サーバー上のファイルに複数の公開鍵がある場合、サーバーはどの公開鍵がクライアントに属しているかを知ることができます。
答え1
クライアントは公開鍵IDを送信し、サーバーはその鍵がリストにあることを確認しますauthorized_keys
。
クライアントは、まず認証するキーペアのIDをサーバーに送信します。
サーバーは、クライアントがログインするアカウントのauthorized_keysファイルでキーIDを確認します。
ファイルに一致するIDを持つ公開鍵が見つかると、サーバーは乱数を生成し、公開鍵を使用して番号を暗号化します。
サーバーはこの暗号化されたメッセージをクライアントに送信します。クライアントが関連付けられた秘密鍵を所有している場合は、その鍵を使用してメッセージを復号化して元の番号を公開できます。
答え2
これはRFC4252クライアントとサーバー間で送受信されるメッセージが含まれます。
- 最初のメッセージには、保存された
SSH_MSG_USERAUTH_REQUEST
キーと比較する公開鍵ブロブが含まれています。authorized_keys
- サーバーの応答
SSH_MSG_USERAUTH_PK_OK
または失敗 - 2番目の項目
SSH_MSG_USERAUTH_REQUEST
には、公開鍵(再びBLOBと仮定)と既知のデータの署名(公開鍵を含む)が含まれます。
最初の2点は必須ではなく、最後の点だけを実行できます(ただし、どのキーが使用されているかを調べると、コンピューティングのパフォーマンスが節約されます)。