我正在尝试连接到驻留在我的web服务器上的远程Git存储库,并将其克隆到我的机器上。

我使用以下格式的命令:

git clone ssh://username@domain.example/repository.git

这对我的大多数团队成员来说都很有效。通常运行此命令后Git会提示输入用户密码,然后运行克隆。然而,当在我的机器上运行时,我得到以下错误:

主机密钥验证失败。 致命的:无法从远程读取 存储库。

我们没有使用SSH密钥连接到这个存储库,所以我不确定Git为什么要在这台特定的机器上检查SSH密钥。


当前回答

原因似乎是远程主机的公钥没有存储或与存储的公钥不同。(注意安全问题,详见Greg Bacon的回答。)

在这种情况下,我习惯了git克隆提示:

The authenticity of host 'host.net (10.0.0.42)' can't be established.
ECDSA key fingerprint is 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00.
Are you sure you want to continue connecting (yes/no)?

不确定,为什么会抛出这个错误。可以是shell的配置,也可以是git SSH命令。 无论如何,您可以通过运行ssh user@host.net得到相同的提示。

其他回答

问题: 主机密钥验证失败。 无法从远程存储库读取。

请确保您拥有正确的访问权限 并且存储库存在。

解决方案:我已经检查了所有的设置,也检查了GitHub中的关键设置。最后,我将Git的URL从“git@github.com:palvsv/travelo-moon.git”更改为“https://github.com/palvsv/travelo-moon.git”。config文件“yourprojectdirectory/”。Git /config”,它可以工作。

这意味着您的远程主机密钥被更改(可能是主机密码更改),

您的终端建议以root用户执行该命令

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]

您必须从pc/服务器的主机列表中删除该主机名。复制建议的命令并作为根用户执行。

$ 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

再试一次,希望这有用。

这是因为github目前不在你的已知主机。

应该会提示您将github添加到已知主机。如果没有出现这种情况,您可以运行ssh -T git@github.com再次接收提示。

如果您在始终由防火墙保护的办公室内部网(否则很危险)中,只需在~/.ssh/config中添加以下行即可。

Host *
  StrictHostKeyChecking no
  UserKnownHostsFile=/dev/null

对我来说,我只需要在提示“您确定要继续连接(是/否)吗?”时输入“是”,而不是直接按Enter。