4.0 KiB
4.0 KiB
处理 SSH 主机密钥验证问题
问题说明
当您看到以下提示时:
The authenticity of host '[101.43.95.130]:29419' can't be established.
ED25519 key fingerprint is SHA256:DH/rryTaDvEpfj6SmXgTJaZtULX1kksBF6DGOvDZjks.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
这是正常的 SSH 安全验证,不是错误!
原因
- 您之前连接过
29418端口,SSH 已经保存了该端口的主机密钥 - 现在使用
29419端口,SSH 将其视为新的主机(不同端口 = 不同主机) - SSH 需要您确认是否信任这个新主机
解决方案
方法 1:直接接受(推荐)
在提示时直接输入 yes 并回车:
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
SSH 会自动将新主机密钥保存到 ~/.ssh/known_hosts 文件中。
方法 2:预先添加主机密钥
如果您想提前添加,可以在 Git Bash 中执行:
# 先删除旧的 29418 端口记录(可选)
ssh-keygen -R [101.43.95.130]:29418
# 手动添加 29419 端口的主机密钥
ssh-keyscan -p 29419 101.43.95.130 >> ~/.ssh/known_hosts
方法 3:更新 known_hosts 文件
手动编辑 known_hosts 文件:
# 在 Git Bash 中打开文件
notepad ~/.ssh/known_hosts
# 或者使用文本编辑器
# 找到包含 101.43.95.130:29418 的行,可以删除或保留
# SSH 会自动为 29419 端口创建新条目
重要说明
✅ 不需要重新配置 SSH 密钥
- SSH 公钥/私钥对(
id_rsa和id_rsa.pub)不需要重新生成 - 这些密钥已经配置好了,可以继续使用
- 只需要接受新的主机密钥(服务器端的密钥)
两种密钥的区别
-
SSH 密钥对(您的密钥):
- 用于身份认证(证明您是您)
- 已经添加到 Gerrit 中
- 不需要重新配置
-
主机密钥(服务器的密钥):
- 用于验证服务器身份(证明服务器是真正的服务器)
- 每个端口都有独立的主机密钥
- 第一次连接时需要接受
完整操作步骤
步骤 1:接受主机密钥
在 Git Bash 中,当看到提示时输入 yes:
$ git push origin HEAD:refs/for/master
The authenticity of host '[101.43.95.130]:29419' can't be established.
ED25519 key fingerprint is SHA256:DH/rryTaDvEpfj6SmXgTJaZtULX1kksBF6DGOvDZjks.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
步骤 2:验证连接
接受后,SSH 会保存主机密钥,然后继续推送。如果一切正常,您会看到推送成功的消息。
步骤 3:后续使用
以后使用 29419 端口时,不会再提示,因为主机密钥已经保存。
验证指纹(可选但推荐)
为了安全,您可以验证指纹是否匹配:
-
在服务器上查看主机密钥指纹:
# 在服务器上执行 ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub -
与提示中的指纹对比:
- 提示中的指纹:
SHA256:DH/rryTaDvEpfj6SmXgTJaZtULX1kksBF6DGOvDZjks - 如果匹配,说明是真正的服务器,可以安全接受
- 提示中的指纹:
常见问题
Q: 输入 yes 后还是失败?
A: 可能的原因:
- SSH 公钥未添加到 Gerrit → 检查
http://101.43.95.130:8080/#/settings/ssh-keys - 用户名错误 → 确认 Git remote URL 中的用户名
- 项目不存在 → 确认项目名称是否正确
Q: 可以跳过主机密钥验证吗?
A: 不推荐!这会降低安全性。但如果是测试环境,可以临时设置:
# 在 ~/.ssh/config 中添加(不推荐生产环境)
Host 101.43.95.130
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
Q: 如何查看已保存的主机密钥?
A:
# 查看 known_hosts 文件
cat ~/.ssh/known_hosts | grep 101.43.95.130
总结
- ✅ 直接输入
yes接受主机密钥即可 - ✅ 不需要重新配置 SSH 密钥(公钥/私钥对)
- ✅ 这是正常的安全验证流程
- ✅ 接受后,后续使用不会再提示