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

我使用以下格式的命令:

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

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

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

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


当前回答

在构建期间,我在DockerFile内部也遇到了同样的错误,而映像是公共的。我在Dockerfile中做了一些修改。

 RUN git clone  https://github.com/kacole2/express-node-mongo-skeleton.git /www/nodejs

这是因为使用git@github.com:…语法最终使用SSH克隆为>,并且在容器中,您的私钥不可用>。你应该使用RUN git克隆> https://github.com/edenhill/librdkafka.git。

其他回答

我有类似的问题,但是,使用SSH密钥。从上面Tupy的回答中,我发现问题是known_hosts文件不存在或github.com不存在于已知主机列表中。下面是我解决这个问题的方法

Mkdir -p ~/.ssh Ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts . sh ssh -t rsa -C "user.email" 使用命令$ cat ~/.ssh/id_rsa打开公钥。酒吧和复制它。 添加id_rsa. conf文件。你的GitHub配置文件上的SSH密钥列表。

>管理Jenkins >配置全局安全> Git主机密钥验证配置。 然后在主机密钥验证策略中选择接受第一个连接。

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

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

Host github.com
    IdentityFile ~/.ssh/github_id_rsa

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

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

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

*不确定是否相关。

正如我之前在克隆git回购导致错误-主机密钥验证失败中回答的那样。致命:远端意外挂机,将GitHub添加到已知主机列表:

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