クライアントから SFTP サーバーに接続する場合、クライアント ソフトウェアに提供する必要があるのは、公開キーではなく秘密キーだけです。[1] と [2] から、どちらもクライアント ソフトウェアが公開鍵を知っている必要があるため、これがどのように機能するかはわかりません。
SFTPの仕組みについての私の理解は
設定
client: 秘密鍵と公開鍵のペアを生成します。
クライアント: 公開鍵をサーバーに送信します
サーバー: この公開鍵を承認済み鍵リストに追加します
接続中
client: サーバーに公開鍵を伝える
サーバー: 公開鍵が承認されているかどうかを確認し、承認されていない場合は拒否し、そうでない場合はランダムなセッション ID をクライアントに送信します
client: クライアントは秘密鍵を使用してランダムなセッション ID をエンコードし、サーバーに送信します
server: 公開鍵で復号化し、身元を確認します。
この場合、クライアントには公開鍵が必要です。ただし、これは提供しませんでしたが、SFTP クライアントは引き続きサーバーに接続できます。では、この SFTP プロトコルは実際にはどのように機能するのでしょうか?