Heim  >  Fragen und Antworten  >  Hauptteil

Git-Fehler beim Herstellen einer Verbindung zum Remote-Repository: „Host-Schlüsselüberprüfung fehlgeschlagen“

<p>Ich versuche, eine Verbindung zu einem Remote-Git-Repository herzustellen, das sich auf meinem Webserver befindet, und es auf meinen Computer zu klonen. </p> <p>Mein Befehl verwendet das folgende Format: </p> <pre class="brush:php;toolbar:false;">git clone ssh://username@domain.example/repository.git</pre> <p>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: </p> <blockquote> <p>Die Überprüfung des Hostschlüssels ist fehlgeschlagen. </p> <p>FATAL: Von der Fernbedienung kann nicht gelesen werden Repository. </p> </blockquote> <p>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. </p>
P粉668113768P粉668113768388 Tage vor598

Antworte allen(2)Ich werde antworten

  • P粉926174288

    P粉9261742882023-08-28 11:25:55

    正如我之前在克隆 git 存储库导致错误 - 主机密钥验证失败。 fatal:远程端意外挂断,将GitHub添加到已知主机列表:

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

    Antwort
    0
  • P粉312631645

    P粉3126316452023-08-28 11:08:39

    您正在通过 SSH 协议进行连接,如克隆 URL 上的 ssh:// 前缀所示。使用 SSH,每个主机都有一个密钥。客户端会记住与特定地址关联的主机密钥,如果主机密钥发生更改,则拒绝连接。这可以防止中间人攻击。

    domain.example 的主机密钥已更改。 如果您觉得这不可疑,请通过编辑 ${HOME}/.ssh/known_hosts 删除 行,从本地缓存中删除旧密钥domain.example 或让 SSH 实用程序为您完成此操作

    ssh-keygen -R domain.example

    从这里,您可以自己记录更新的密钥

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

    或者,同等地,让 ssh 在您下次使用 git fetchgit pullgit 连接时为您完成此操作推送(甚至是普通的ssh domain.example),在出现提示时回答“是”

    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)?

    出现此提示的原因是 domain.example 删除后不再位于您的 known_hosts 中,并且可能不在系统的 /etc/ssh/ssh_known_hosts 中,因此ssh无法知道连接另一端的主机是否真的是domain.example。 (如果 /etc 中的密钥错误,则具有管理权限的人员将必须更新系统范围的文件。)

    我强烈建议您考虑让用户也使用密钥进行身份验证。这样,ssh-agent 可以为了方便而存储密钥材料(而不是每个人都必须在每次连接到服务器时输入密码),并且密码不会通过网络传输。

    Antwort
    0
  • StornierenAntwort