Ich versuche, eine Verbindung zu einem Remote-Git-Repository herzustellen, das sich auf meinem Webserver befindet, und es auf meinen Computer zu klonen.
Mein Befehl verwendet das folgende Format:
git clone ssh://username@domain.example/repository.git
Das funktioniert bei den meisten meiner Teammitglieder gut. Normalerweise fragt Git nach der Ausführung dieses Befehls nach dem Benutzerkennwort und führt dann den Klon aus. Beim Ausführen auf einem meiner Computer erhalte ich jedoch die folgende Fehlermeldung:
Die Überprüfung des Hostschlüssels ist fehlgeschlagen.
FATAL: Von der Fernbedienung kann nicht gelesen werden Repository.
Wir verwenden keinen SSH-Schlüssel, um eine Verbindung zu diesem Repository herzustellen, daher bin ich mir nicht sicher, warum Git auf diesem bestimmten Computer nach dem Schlüssel sucht.
正如我之前在克隆 git 存储库导致错误 - 主机密钥验证失败。 fatal:远程端意外挂断,将GitHub添加到已知主机列表:
您正在通过 SSH 协议进行连接,如克隆 URL 上的
ssh://
前缀所示。使用 SSH,每个主机都有一个密钥。客户端会记住与特定地址关联的主机密钥,如果主机密钥发生更改,则拒绝连接。这可以防止中间人攻击。domain.example
的主机密钥已更改。如果您觉得这不可疑,请通过编辑${HOME}/.ssh/known_hosts
删除行,从本地缓存中删除旧密钥domain.example
或让 SSH 实用程序为您完成此操作从这里,您可以自己记录更新的密钥
或者,同等地,让
ssh
在您下次使用git fetch
、git pull
或git 连接时为您完成此操作推送
(甚至是普通的ssh domain.example
),在出现提示时回答“是”出现此提示的原因是
domain.example
删除后不再位于您的known_hosts
中,并且可能不在系统的/etc/ssh/ssh_known_hosts 中
,因此ssh
无法知道连接另一端的主机是否真的是domain.example
。 (如果/etc
中的密钥错误,则具有管理权限的人员将必须更新系统范围的文件。)我强烈建议您考虑让用户也使用密钥进行身份验证。这样,
ssh-agent
可以为了方便而存储密钥材料(而不是每个人都必须在每次连接到服务器时输入密码),并且密码不会通过网络传输。