我正在尝试连接到驻留在我的web服务器上的远程Git存储库,并将其克隆到我的机器上。
我使用以下格式的命令:
git clone ssh://username@domain.example/repository.git
这对我的大多数团队成员来说都很有效。通常运行此命令后Git会提示输入用户密码,然后运行克隆。然而,当在我的机器上运行时,我得到以下错误:
主机密钥验证失败。
致命的:无法从远程读取
存储库。
我们没有使用SSH密钥连接到这个存储库,所以我不确定Git为什么要在这台特定的机器上检查SSH密钥。
这意味着您的远程主机密钥被更改(可能是主机密码更改),
您的终端建议以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
再试一次,希望这有用。
这意味着您的远程主机密钥被更改(可能是主机密码更改),
您的终端建议以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
再试一次,希望这有用。
您正在通过SSH协议进行连接,正如克隆URL上的SSH://前缀所示。使用SSH,每个主机都有一个密钥。客户端记住与特定地址相关联的主机密钥,并在主机密钥似乎发生变化时拒绝连接。这可以防止中间的人攻击。
域的主机密钥。例子变了。如果这对您来说不可疑,可以通过编辑${HOME}/从本地缓存中删除旧密钥。Ssh /known_hosts删除域行。示例或让SSH实用程序为您完成
ssh-keygen -R domain.example
从这里开始,您可以自己记录更新后的密钥
ssh-keyscan -t rsa domain.example >> ~/.ssh/known_hosts
或者,等效地,下次当你连接git fetch、git pull或git push(甚至是一个普通的SSH域。示例)时,让SSH在提示时回答yes
The authenticity of host 'domain.example (a.b.c.d)' can't be established.
RSA key fingerprint is XX:XX:...:XX.
Are you sure you want to continue connecting (yes/no)?
提示的原因是域。Example在删除后不再在您的known_hosts中,并且可能不在系统的/etc/ssh/ssh_known_hosts中,因此SSH无法知道连接另一端的主机是否真的是domain.example。(如果错误的密钥在/etc中,具有管理权限的人将必须更新系统范围内的文件。)
我强烈建议您也考虑让用户使用密钥进行身份验证。这样,ssh-agent可以方便地存储密钥材料(而不是每个人都必须在每次连接到服务器时输入密码),并且密码不会通过网络传递。