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

我使用以下格式的命令:

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

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

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

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


当前回答

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

Host *
  StrictHostKeyChecking no
  UserKnownHostsFile=/dev/null

其他回答

这里提到的解决方案很好,唯一缺少的一点是,如果您的公钥和私钥文件名与默认文件名不同怎么办?

在~/下创建一个名为“config”的文件。SSH并添加以下内容

Host github.com
    IdentityFile ~/.ssh/github_id_rsa

将github_id_rsa替换为您的私钥文件。

或者,如果您使用MSYS2终端(在Windows*上)和密码短语,可能是终端没有正确提示“输入密码短语”,从而拒绝访问SSH。

如果你在Windows上,你可以使用Git Bash或Powershell来获得提示并正确连接。(我目前正在寻找MSYS的解决方案。)

*不确定是否相关。

当远程服务器想要连接到私有回购时,它将通过ssh进行身份验证。 使用ssh-keygen创建公私密钥对(如果您已经拥有公私密钥)。在私有回购的设置中复制并粘贴公钥。

YourPrivateRepo -> Settings ->部署密钥->添加部署密钥->粘贴公钥。

现在远程服务器将能够连接到私有回购。

注意:部署键仅具有读取repo的访问权限。需要显式地允许写访问。

对Tupy的回答做一个小小的补充,您可能需要添加存储库主机的端口号:

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

如果您有另一台具有远程访问权限的计算机,您可以通过查看~/.ssh/known_hosts找到端口号:

[user]$ less ~/.ssh/known_hosts
[domain.example]:8888,[000.00.000.000]:8888 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCi...

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

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

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