首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么SFTP客户只需要知道私钥,而不需要公钥呢?

为什么SFTP客户只需要知道私钥,而不需要公钥呢?
EN

Stack Overflow用户
提问于 2013-09-06 21:59:35
回答 1查看 7.1K关注 0票数 9

当我从客户端连接一个SFTP服务器时,我只需要向客户端软件提供私钥,而不是公钥。我不知道这是如何工作的,因为从1和2,两者都需要客户端软件也知道公钥。

我对SFTP工作原理的理解

设置

  • client:生成私钥/公钥对。
  • 客户端:向服务器发送公钥
  • 服务器:将此公钥添加到其授权密钥列表中。

连接期间

  • client:告诉服务器公钥
  • 服务器:检查公钥是否已授权,如果没有,则拒绝,否则,向客户端发送随机会话id。
  • client:客户端使用私钥对随机会话id进行编码并发送到服务器。
  • 服务器:通过公钥对其进行解码并确认身份。

在这种情况下,客户端需要公钥。但是,我没有提供这个,但是SFTP客户端仍然能够连接服务器。那么这个SFTP协议到底是如何工作的呢?

1

2

EN

回答 1

Stack Overflow用户

发布于 2013-10-05 06:13:15

虽然@Pascal的评论是正确的答案,但它只是答案的一半,因为实际上,客户端确实需要一个公钥--但是只有服务器的公钥,而且您已经在known_hosts文件中得到了它。

如果你没有-你被要求信任服务器在你第一次连接到服务器时所呈现的那个。这是大多数人完全忽视的事情。如果您在第一个连接期间被DNS中毒(或者有其他形式的中间人攻击正在进行),或者不注意Server identity has changed通知,那么您很容易受到MitM攻击。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18667218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档