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

SSH主机密钥(host key)与公私钥对(public-private key pair)的区别解析及新VPS登录失败问题排查

SSH主机密钥(host key)与公私钥对(public-private key pair)的区别解析及新VPS登录失败问题排查

老兄,我来一步步帮你理清这些困惑,先从你最懵的那个SHA256指纹说起:

一、那个SHA256字符串是什么意思?

你看到的 SHA256:5OrjMYiYdmoRTDgjsmBfOXun/4FpiClOU6L21gBDPSk 是新VPS的ED25519主机密钥的指纹。说白了,主机密钥是一长串的公钥字符串,直接看太费劲,SHA256指纹就是它的“简化缩略版”,用来让你快速识别服务器的身份,防止别人搞中间人攻击骗你连接假服务器。

二、搞清楚:主机密钥≠你的用户公私钥对

你现在混淆了两类完全不同的密钥,我给你掰明白:

  • 主机密钥:这是服务器自己生成的!每次新安装Linux(或者重置VPS)时,系统会自动生成一套不同算法的主机密钥对(通常包含RSA、ED25519、ECDSA这几种),存放在服务器的 /etc/ssh/ 目录下(比如 ssh_host_ed25519_key 这类文件)。它的唯一作用是:让你的Windows客户端确认“我连接的是真的目标服务器,不是假的”。
  • 用户公私钥对:这才是你自己生成的(比如用 ssh-keygen 命令),用来做用户身份认证——你把公钥传到服务器的 ~/.ssh/authorized_keys 文件里,客户端用私钥证明“我是合法的登录用户”。这和主机密钥是完全独立的两套东西,别搞混了!

三、为什么你替换了RSA密钥还是登录失败?

看你的debug日志里的关键信息:

debug1: kex: host key algorithm: ssh-ed25519

还有错误提示:

Offending RSA key in C:\\Users\\roeslermichal/.ssh/known_hosts:15
Host key verification failed.

问题出在这两点:

  1. SSH客户端和新VPS协商时,优先选择了ED25519算法来验证主机身份,但你只更新了known_hosts里的RSA条目,没处理旧的ED25519/ECDSA条目(或者旧的RSA条目没删干净);
  2. 你的known_hosts里同一个IP(10.32.81.216)对应了多套密钥,而SSH默认的严格检查模式会认为这是危险信号,直接拒绝连接。

四、快速解决登录问题的步骤

直接一步到位清理并重新获取主机密钥:

  1. 清理旧的主机密钥条目:打开 C:\Users\roeslermichal\.ssh\known_hosts 文件,删除所有包含 10.32.81.216 的行,保存关闭;
  2. 获取新VPS的所有主机密钥:在PowerShell里运行这条命令,自动把新VPS的三种算法主机密钥追加到known_hosts里:
    ssh-keyscan -t rsa,ed25519,ecdsa-sha2-nistp256 10.32.81.216 >> C:\Users\roeslermichal\.ssh\known_hosts
    
  3. 再次尝试登录:运行 ssh root@10.32.81.216,这次应该就能正常连接了。

最后补充一句:新VPS刚创建就有主机密钥是正常的——Linux系统在安装OpenSSH服务的时候会自动生成这些密钥,不需要你手动操作,这是默认的安全机制。

备注:内容来源于stack exchange,提问作者michal roesler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 14:03:05