Git error: “Host Key Verification Failed” when connecting to remote repository
我正在尝试连接到Web服务器上的远程Git存储库,并将其克隆到我的计算机上。
我的命令使用以下格式:
1 | git clone ssh://[email protected]/repository.git |
这对我的大多数团队成员来说都很有效。通常在运行这个命令之后,git会提示输入用户的密码,然后运行克隆。但是,在我的一台机器上运行时,我会得到以下错误:
Host key verification failed.
fatal: Could not read from remote
repository.
我们没有使用ssh密钥连接到这个存储库,所以我不知道为什么git要在这个特定的机器上检查一个。
正如我之前在克隆git repo中回答的那样,这会导致错误-主机密钥验证失败。致命:远程端意外挂断,将GitHub添加到授权主机列表:
您正在通过ssh协议进行连接。使用ssh,每个主机都有一个密钥。客户机记住与特定地址关联的主机密钥,如果主机密钥出现更改,则拒绝连接。这可以防止中间人攻击。
domain.com的主机密钥已更改。如果您不觉得可疑,可以使用
1 | $ ssh-keygen -R domain.com |
我强烈建议您也考虑让用户使用密钥进行身份验证。这样,
我也有类似的问题,但是,使用ssh密钥。从上面的Tupy的回答中,我发现问题在于已知主机文件不存在,或者Github.com不在已知主机列表中。以下是我解决问题的步骤-
这是因为GitHub当前不在您的已知主机中。
应该提示您将GitHub添加到已知主机。如果没有发生这种情况,可以运行
对于我来说,我只需要在提示中键入"是",询问"您确定要继续连接吗(是/否)"?而不仅仅是按回车键。
我在新安装的系统上遇到了同样的问题,但这是一个udev问题。没有
1 | mknod -m 666 /dev/tty c 5 0 |
如果您在办公室内部网(否则很危险),它总是受到防火墙的保护,那么在您的~/.ssh/config中只需要以下几行
主机*严格钥匙检查否userknownhostsfile=/dev/null
对于我来说,首先添加新计算机的ssh密钥是有效的,我遵循了gitlab中的这些说明-添加ssh密钥。注意,由于我在Win10上,所以我必须在Windows上的Git-Bash中执行所有这些命令(它在常规的DOS命令shell中不起作用)。
然后,在Git-Bash中,我必须对我遇到问题的回购进行
1 | git clone ssh://git@gitServerUrl/myRepo.git myRepo2 |
然后我得到了将其添加到已知主机列表的提示,问题可能是:
Are you sure you want to continue connecting (yes/no)?
我输入了"是"并最终成功了,您通常会收到类似这样的消息:
Warning: Permanently added '[your repo link]' (ECDSA) to the list of known hosts.
注意:如果您在Windows上,请确保对所有命令都使用git-bash,这在常规的cmd shell或powershell中不起作用,我真的必须在git-bash中这样做。
最后,我删除了第二个克隆repo(示例中的
如果您使用的是Git for Windows。
- 打开Git图形用户界面。
- 在Git GUI中打开本地Git存储库。
- 添加遥控器或按(如果遥控器已经存在)。
- 对于是否要继续的问题,请回答"是"。
GUI客户机将您的密钥添加到
这意味着远程主机密钥已更改(可能是主机密码更改)。
您的终端建议以根用户身份执行此命令
1 | $ ssh-keygen -f"/root/.ssh/known_hosts" -R [www.website.net] |
您必须从PC/服务器的主机列表中删除该主机名。复制建议的命令并作为根用户执行。
1 2 3 4 5 6 7 8 | $ sudo su // Login as a root user $ ssh-keygen -f"/root/.ssh/known_hosts" -R [www.website.net] // Terminal suggested command execute here Host [www.website.net]:4231 found: line 16 type ECDSA /root/.ssh/known_hosts updated. Original contents retained as /root/.ssh/known_hosts.old $ exit // Exist from root user |
再试一次,希望能成功。
当被问到:
键入yes作为响应
这就是我解决问题的方法。但是如果你试着按回车键,它就不起作用了!
在构建期间,当图像公开时,我在dockerfile中遇到了同样的错误。我对dockerfile做了一些修改。
1 | RUN git clone https://github.com/kacole2/express-node-mongo-skeleton.git /www/nodejs |
This would be because using the [email protected]:... syntax ends up > using SSH to clone, and inside the container, your private key is not > available. You'll want to use RUN git clone > https://github.com/edenhill/librdkafka.git instead.
您可以在jenkinsfile中使用"https"url格式的"git url",也可以在任何需要的地方使用。
我也有类似的问题,不幸的是我使用了gitextensions HMI,忘记了我写了一个密码。用HMI…算了吧!生成密钥时不要输入密码!
当我试图用一种非我的回购方式来兑现时,我收到了这个信息。修复方法是分叉然后克隆。