发布线上报错 Host key verification failed.

本文详细解析了在使用ssh连接远程服务器时遇到的Hostkeyverificationfailed错误的原因,并提供了两种有效的解决方案,包括删除known_hosts文件中对应条目或完全清除并重建该文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

发布报错 Host key verification failed.

问题描述
发布线上环境时,脚本报错,报行如下信息

RSA host key for git.tianyancha.com has changed and you have requested strict checking.
Host key verification failed.

如图:
在这里插入图片描述
问题原因

我们yarn 、npm ,是通过,ssh 进行依赖安装的,ssh 每次登陆过对应ip 的shh ,会将登陆信息,默认保存在 /home/work/.ssh/known_hosts 中。一旦对应服务起,环境发生变化(重新安装过环境、或被劫持),导致信息校验出问题。就会报 RSA host key for xxxx has changed 。
首次登陆的时候,也会给出提示如下。

Are you sure you want to continue connecting (yes/no)?

在这里插入图片描述

解决方案
第一种: 删除对应known_hosts,中,对应域名的信息。
第二种: 删除known_hosts,重建。

删除,对应known_hosts 后,手动,通过 shh 登陆一下,再使用 yarn 命令

rm ~/.ssh/known_hosts
ssh xx@xxxxxxx
<think>好的,我现在需要帮用户解决Git连接时出现的“Host key verification failed”错误。首先,我得回想一下这个错误通常是什么原因引起的。记得这个错误通常和SSH有关,可能是远程主机的密钥发生了变化,或者本地没有正确记录主机的密钥。 用户提供的引用中有提到Git的SSH问题,比如引用[1]是关于权限拒绝的问题,引用[2]涉及自签名证书配置,不过这个错误可能和证书无关,而是SSH主机密钥的问题。不过用户的问题明确是Host key verification failed,所以应该集中在这个方面。 首先,我应该确认这个错误发生的场景。当使用SSH连接Git仓库时,SSH客户端会检查远程主机的密钥是否与本地known_hosts文件中的记录匹配。如果不匹配,就会拒绝连接,防止中间人攻击。所以可能的情况是,远程主机的密钥确实发生了变化,或者用户第一次连接该主机,本地没有记录。 接下来,解决方案的第一步可能是让用户手动接受主机密钥。可以通过运行ssh命令连接到Git服务器,比如ssh -T git@github.com,然后当提示是否继续连接时,选择yes。这会将主机密钥添加到known_hosts文件中,从而解决问题。 如果用户已经尝试过但问题依旧,可能需要检查known_hosts文件中是否有重复或冲突的条目。有时候,同一个主机可能有多个条目,导致密钥不匹配。这时候需要删除对应的条目,或者整个文件,然后重新连接。 另外,如果用户的环境存在代理或防火墙,可能会影响SSH连接,但Host key verification failed更直接的原因还是密钥问题。不过引用中的自签名证书配置可能在某些内部Git服务器中使用,如果是这种情况,可能需要将服务器的公钥手动添加到known_hosts,或者配置SSH忽略主机密钥检查,但后者不安全,不推荐。 用户可能遇到的另一个情况是服务器迁移或更换了SSH密钥,导致本地记录失效。这时候需要更新本地的known_hosts文件。可以手动删除旧条目,或者使用ssh-keygen -R hostname命令来移除特定主机的旧密钥。 需要提醒用户的是,忽略主机密钥验证(比如设置StrictHostKeyChecking为no)虽然可以临时解决问题,但会降低安全性,容易受到中间人攻击,所以应该尽量避免,只在测试环境中临时使用。 然后,根据用户提供的引用,引用[2]中的自签名证书配置可能相关,但可能更多是针对HTTPS的证书问题,而这里是SSH的Host key问题,需要区分开。不过用户的问题可能混淆了这两种情况,所以需要明确说明两者的区别。 最后,生成相关问题的时候,应该围绕这个错误的可能原因和解决方案展开,比如如何更新密钥、如何检查known_hosts文件、安全注意事项等。</think>### Git 'Host key verification failed' 错误解决方案 该错误表示SSH客户端无法验证远程服务器的公钥有效性,常见于以下场景: 1. 首次连接新主机未接受密钥 2.服务器密钥发生变更 3.本地$HOME/.ssh/known_hosts文件记录异常 #### 分步解决方案: 1. **手动接受主机密钥** 在终端执行: ```bash ssh -T git@github.com # 以GitHub为例 ``` 当出现提示时输入`yes`,会将服务器公钥自动添加到$HOME/.ssh/known_hosts[^1] 2. **清除旧密钥记录** 若遇到密钥变更警告,使用: ```bash ssh-keygen -R github.com # 替换为实际域名 ``` 该命令会删除指定主机的旧密钥记录 3. **验证known_hosts文件完整性** 检查文件格式是否正确: ```bash cat ~/.ssh/known_hosts | grep github.com ``` 正常应包含类似: ``` github.com ssh-rsa AAAAB3NzaC1yc2E... ``` 4. **(谨慎使用)临时关闭验证** 仅限测试环境临时方案: ```bash export GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=no" git pull # 执行git操作 ``` ⚠️ 此方法会降低安全性,生产环境禁止使用[^2] #### 典型应用场景示例: ```bash # 当Git服务器IP地址变更后 ssh-keygen -R git.example.com git fetch # 此时会重新提示验证密钥 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值