当我从客户端连接 SFTP 服务器时,我只需要向客户端软件提供私钥,而不是公钥。我不知道这是如何工作的,因为从 [1] 和 [2] 开始,都需要客户端软件也知道公钥。
我对 SFTP 工作原理的理解是
设置
客户端:生成私钥/公钥对。
客户端:向服务器发送公钥
服务器:将此公钥添加到其授权密钥列表中
连接期间
客户端:告诉服务器公钥
服务器:检查公钥是否被授权,如果没有,则拒绝,否则,向客户端发送一个随机会话ID
客户端:客户端使用私钥对随机会话 id 进行编码并发送到服务器
服务器:通过公钥解码并确认身份。
在这种情况下,客户端需要公钥。但是,我没有提供这个,但 SFTP 客户端仍然能够连接服务器。那么这个 SFTP 协议究竟是如何工作的呢?