你在公司新配的笔记本上第一次用git clone拉代码,结果跳出一行红字:Host key verification failed。项目等着开工,你卡在这儿干着急。别慌,这问题太常见了,根本不是权限不对,也不是网络不行,而是SSH在认门牌号时犯了迷糊。
为啥会出这个错?
当你第一次通过SSH连接一台服务器(比如GitHub、GitLab这类代码托管平台),系统会把服务器的“指纹”存到本地~/.ssh/known_hosts文件里。下次再连,就比对指纹。如果发现不一致,SSH就会拦住你,防止中间人攻击——这就是host key verification failed的由来。
但很多时候,你压根没被攻击。可能是你重装过系统,也可能是公司IP换了出口,还可能是远程仓库服务器升级过密钥。SSH不知道这些变化,只认旧账,于是把你拒之门外。
快速解决办法:删掉旧记录
最直接的办法是手动清除对应主机的旧指纹。比如你要克隆的是GitHub的仓库,报错里一般会带域名:
git clone git@github.com:username/project.git
// 报错:Host key verification failed
这时候执行:
ssh-keygen -R github.com
这条命令的意思是“把github.com从known_hosts里删了”。然后再试一次git clone,系统会像第一次那样问你:“要不要信任这个主机?” 输入yes就行。
其他可能的情况
如果你用的是公司私有GitLab,地址可能是git.company.com,那就把上面命令里的域名换成它:
ssh-keygen -R git.company.com
有时候你改过SSH配置,比如用了代理或跳板机,也可能触发这个错误。这时候不仅要清记录,还得确认~/.ssh/config里有没有写错端口或HostKeyAlias。
还有种情况是你在多台设备间切换,比如家里电脑和公司电脑同步同一个账号。别想着复制known_hosts文件过去凑合用,每台机器都应该独立验证一次,安全第一。
别用暴力跳过验证
网上有人教你改SSH配置,加一句StrictHostKeyChecking no,让系统不再校验主机密钥。听着省事,实则埋雷。这么干等于让所有冒牌服务器都能骗走你的密码或私钥,风险太大,千万别为了图快踩坑。
遇到host key verification failed,本质是系统在帮你守门。只要清理下旧数据,重新认证,基本秒好。下次看到这提示,不用懵,按步骤走一遍,该拉代码拉代码,该上线线上。