连接到远程仓库时出现Git错误:"主机密钥验证失败"
P粉668113768
P粉668113768 2023-08-27 12:34:09
0
2
654
<p>我正在尝试连接到驻留在我的 Web 服务器上的远程 Git 存储库并将其克隆到我的计算机。</p> <p>我的命令使用以下格式:</p> <pre class="brush:php;toolbar:false;">git clone ssh://username@domain.example/repository.git</pre> <p>这对我的大多数团队成员来说效果很好。通常运行此命令后,Git 会提示输入用户密码,然后运行克隆。但是,当在我的一台机器上运行时,出现以下错误:</p> <blockquote> <p>主机密钥验证失败。</p> <p>致命:无法从远程读取 存储库。</p> </blockquote> <p>我们没有使用 SSH 密钥连接到此存储库,因此我不确定为什么 Git 会在这台特定计算机上检查密钥。</p>
P粉668113768
P粉668113768

全部回复(2)
P粉926174288

正如我之前在克隆 git 存储库导致错误 - 主机密钥验证失败。 fatal:远程端意外挂断,将GitHub添加到已知主机列表:

ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
P粉312631645

您正在通过 SSH 协议进行连接,如克隆 URL 上的 ssh:// 前缀所示。使用 SSH,每个主机都有一个密钥。客户端会记住与特定地址关联的主机密钥,如果主机密钥发生更改,则拒绝连接。这可以防止中间人攻击。

domain.example 的主机密钥已更改。 如果您觉得这不可疑,请通过编辑 ${HOME}/.ssh/known_hosts 删除 行,从本地缓存中删除旧密钥domain.example 或让 SSH 实用程序为您完成此操作

ssh-keygen -R domain.example

从这里,您可以自己记录更新的密钥

ssh-keyscan -t rsa domain.example >> ~/.ssh/known_hosts

或者,同等地,让 ssh 在您下次使用 git fetchgit pullgit 连接时为您完成此操作推送(甚至是普通的ssh domain.example),在出现提示时回答“是”

The authenticity of host 'domain.example (a.b.c.d)' can't be established.
RSA key fingerprint is XX:XX:...:XX.
Are you sure you want to continue connecting (yes/no)?

出现此提示的原因是 domain.example 删除后不再位于您的 known_hosts 中,并且可能不在系统的 /etc/ssh/ssh_known_hosts 中,因此ssh无法知道连接另一端的主机是否真的是domain.example。 (如果 /etc 中的密钥错误,则具有管理权限的人员将必须更新系统范围的文件。)

我强烈建议您考虑让用户也使用密钥进行身份验证。这样,ssh-agent 可以为了方便而存储密钥材料(而不是每个人都必须在每次连接到服务器时输入密码),并且密码不会通过网络传输。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!