Erreur Git lors de la connexion au référentiel distant : "Échec de la vérification de la clé d'hôte"
P粉668113768
2023-08-27 12:34:09
<p>J'essaie de me connecter à un référentiel Git distant qui réside sur mon serveur Web et de le cloner sur mon ordinateur. </p>
<p>Ma commande utilise le format suivant : </p>
<pre class="brush:php;toolbar:false;">git clone ssh://username@domain.example/repository.git</pre>
<p>Cela fonctionne bien pour la plupart des membres de mon équipe. Normalement, après avoir exécuté cette commande, Git demandera le mot de passe de l'utilisateur, puis exécutera le clone. Cependant, lors de l'exécution sur l'une de mes machines, j'obtiens l'erreur suivante : </p>
<blockquote>
<p>La vérification de la clé d'hôte a échoué. </p>
<p>FATAL : Impossible de lire à distance
dépôt. </p>
</blockquote>
<p>Nous n'utilisons pas de clé SSH pour nous connecter à ce référentiel, donc je ne sais pas pourquoi Git recherche la clé sur cette machine particulière. </p>
Comme je l'ai fait précédemment lors du clonage d'un référentiel git, l'erreur suivante s'est produite : échec de la vérification de la clé hôte. fatal : L'extrémité distante a raccroché de manière inattendue , ajoutant GitHub à la liste des hôtes connus :
Vous vous connectez via le protocole SSH, comme l'indique le préfixe
ssh://
sur l'URL du clone. Avec SSH, chaque hôte possède une clé. Le client se souvient de la clé d'hôte associée à une adresse spécifique et refuse la connexion si la clé d'hôte change. Cela évite les attaques de l’homme du milieu.domain.example
的主机密钥已更改。 如果您觉得这不可疑,请通过编辑${HOME}/.ssh/known_hosts
删除行,从本地缓存中删除旧密钥domain.example
Ou laissez un utilitaire SSH le faire pour vousÀ partir de là, vous pouvez enregistrer vous-même la clé mise à jour
Ou, de manière équivalente, laissez
ssh
在您下次使用git fetch
、git pull
或git 连接时为您完成此操作推送
(甚至是普通的ssh domain.example
), répondez « Oui » lorsque vous y êtes invitéLa raison de cette invite est que la clé dans
domain.example
删除后不再位于您的known_hosts
中,并且可能不在系统的/etc/ssh/ssh_known_hosts 中
,因此ssh
无法知道连接另一端的主机是否真的是domain.example
。 (如果/etc
est erronée, alors une personne disposant de droits d'administrateur devra mettre à jour le fichier à l'échelle du système. )Je vous recommande fortement d'envisager également de permettre aux utilisateurs de s'authentifier à l'aide de clés. De cette façon,
ssh-agent
le matériel clé peut être stocké pour plus de commodité (plutôt que tout le monde doive saisir un mot de passe à chaque fois qu'il se connecte au serveur), et le mot de passe n'est pas transmis sur le réseau.