You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于SSH public key与private key双向加密机制及认证配置的疑问

关于SSH public key与private key双向加密机制及认证配置的疑问

哥们,你的这个疑问其实戳中了SSH协议里很多新手容易混淆的核心点,我来给你把这层窗户纸捅破~

首先得把身份认证和数据加密传输这两个环节分开看,你之前可能把它们混在一起了:

1. 服务器公钥其实已经“悄悄”存到你的机器里了

你说没看到任何教程让你把服务器公钥放到用户机器,其实不是没做,而是SSH自动帮你完成了这个操作!

当你第一次用SSH连接某台服务器时,终端一定会弹出类似这样的提示:

The authenticity of host 'xxx (x.x.x.x)' can't be established. ED25519 key fingerprint is SHA256:xxxx. Are you sure you want to continue connecting (yes/no/[fingerprint])?

这时候你输入yes,SSH就会把这台服务器的公钥自动存在你本地的~/.ssh/known_hosts文件里(Windows系统路径是C:\Users\<你的用户名>\.ssh\known_hosts)。这个过程就是把服务器公钥“部署”到用户机器的步骤,只是它是自动执行的,不需要你手动复制粘贴,所以教程里不会特意拿出来讲。

2. SSH的双向加密&认证流程到底是怎样的

咱们一步步拆解完整流程,你就明白为什么不用手动传服务器公钥了:

  • 第一步:验证服务器身份
    你发起连接后,服务器先把自己的公钥发给你,你用本地known_hosts里存的公钥(第一次连接就存好了)对比验证,确认这是你要连的目标服务器(防止中间人攻击)。
  • 第二步:协商对称加密密钥
    身份验证通过后,双方会协商生成一个临时对称加密密钥——因为非对称加密速度太慢,不适合大量数据传输,所以只用来安全协商这个对称密钥。这个协商过程是用服务器的公钥加密的,只有服务器的私钥能解密,中间没人能篡改。
  • 第三步:用户身份认证
    这就是教程里教你把用户公钥放到服务器~/.ssh/authorized_keys里的作用:服务器会用你的公钥加密一段随机字符串,只有你的私钥能解密,你解密后把结果发回给服务器,服务器验证通过就确认你是合法用户,允许登录。
  • 第四步:双向加密传输数据
    之后所有的双向数据(不管是你发往服务器,还是服务器发给你),全都是用之前协商好的对称密钥加密的,速度快且安全。

3. 为什么教程只提用户公钥部署?

因为服务器公钥的部署是SSH协议自动完成的,第一次连接就搞定了,不需要用户手动干预;而用户公钥必须手动放到服务器的authorized_keys里,这是用户身份认证的必要条件,所以所有教程都会重点讲这个步骤。

你按照教程配置后能成功登录,本质上是因为第一次连接时,SSH已经悄悄把服务器公钥存在你本地了——如果你删掉本地known_hosts里对应服务器的条目,再重新连接,就会再次看到那个确认公钥的提示,这也能反过来证明服务器公钥确实在你机器里存着。

备注:内容来源于stack exchange,提问作者Sina M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 16:25:31