当我从客户端连接SFTP服务器时,我只需要向客户端软件提供私钥,而不是公钥.我不知道这是如何工作的,因为从[1]和[2]开始,两者都要求客户端软件也知道公钥.
我对SFTP如何工作的理解
建立
客户端:生成私钥/公钥对.
client:将公钥发送给服务器
server:将此公钥添加到其授权密钥列表中
在连接期间
客户端:告诉服务器公钥
server:检查公钥是否被授权,如果没有,拒绝,否则,向客户端发送随机会话ID
客户端:客户端使用私钥对随机会话ID进行编码并发送给服务器
server:通过公钥解码并确认身份.
在这种情况下,客户端需要公钥.但是,我没有提供此功能,但SFTP客户端仍然能够连接服务器.那么这个SFTP协议真的有用吗?
虽然@Pascal Cuoq 的评论是正确答案,但它只是答案的一半,因为实际上,客户端确实需要一个公钥 - 但只需要服务器的公钥,而您的known_hosts文件中已经有了它。
如果您不这样做 - 您将被要求信任服务器在您第一次连接到服务器时显示的那个。这是大多数人完全忽略的事情。如果您在第一次连接期间被 DNS 中毒(或正在进行某种其他形式的中间人攻击) - 或者不注意Server identity has changed通知 - 您很容易受到中间人攻击。
| 归档时间: |
|
| 查看次数: |
5646 次 |
| 最近记录: |