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

我使用以下格式的命令:

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

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

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

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


当前回答

如果您不使用Windows Session来更新代码,而使用PortableGit,则需要在运行git命令之前设置HOMEPATH环境变量。

这个例子更适合其他用例,但我认为它是本文的一个很好的概念证明。

$env:HOMEPATH="\Users\Administrator";C:\path\to\PortableGit\bin\git.exe -C:\path\to\repository;git拉动”

其他回答

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

您的终端建议以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中的关键设置。最后,我将Git的URL从“git@github.com:palvsv/travelo-moon.git”更改为“https://github.com/palvsv/travelo-moon.git”。config文件“yourprojectdirectory/”。Git /config”,它可以工作。

还要检查known_hosts文件的权限——包括用户的(~/.ssh/known_hosts)和全局的(/etc/ssh/ssh_known_hosts)。

在我的例子中,旧主机在/etc/ssh/ssh_known_hosts中。当我用sudo ssh-keygen -f /etc/ssh/ssh_known_hosts -R THE_HOST将其作为根删除时,它将该文件的权限更改为0600,因此SSHing到THE_HOST作为根工作,但对于任何其他用户来说,它失败了“主机密钥验证失败”。解决方案是:

sudo chmod 644 /etc/ssh/ssh_known_hosts

对我来说,我只是将“known_hosts”文件重命名为“known_hosts.del”进行备份。然后重新运行git克隆XXX并键入“yes”。新建known_hosts

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

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

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

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