J'essaie de me connecter à un référentiel Git distant qui réside sur mon serveur Web et de le cloner sur ma machine.
J'utilise le format suivant pour ma commande:
git clone ssh://[email protected]/repository.git
Cela a bien fonctionné pour la plupart des membres de mon équipe. Habituellement, après avoir exécuté cette commande, Git demandera le mot de passe de l'utilisateur, puis exécutera le clonage. Cependant, lors de l'exécution sur une de mes machines, j'obtiens l'erreur suivante:
La vérification de la clé d'hôte a échoué.
fatal: impossible de lire à partir du référentiel distant.
Nous n'utilisons pas de clés SSH pour se connecter à ce référentiel, donc je ne sais pas pourquoi Git en recherche une sur cette machine particulière.
ssh://
Réponses:
Vous vous connectez via le protocole SSH, comme indiqué par le
ssh://
préfixe sur l'URL de votre clone. En utilisant SSH, chaque hôte possède une clé. Les clients se souviennent de la clé d'hôte associée à une adresse particulière et refusent de se connecter si une clé d'hôte semble changer. Cela empêche l'homme au milieu des attaques.La clé d'hôte de domain.com a changé. Si cela ne vous semble pas louche , supprimez l'ancienne clé de votre cache local en modifiant
${HOME}/.ssh/known_hosts
pour supprimer la ligne pour domain.com ou en laissant un utilitaire SSH le faire pour vous avecÀ partir d'ici, enregistrez la clé mise à jour soit en le faisant vous-même avec
ou, ce qui revient, laissez -le
ssh
faire pour vous la prochaine fois que vous vous connectez avecgit fetch
,git pull
ougit push
(ou même une plaine ol »ssh domain.com
) en répondant oui lorsque vous êtes invitéLa raison de cette invite est que domain.com n'appartient plus à vous
known_hosts
après l'avoir supprimé et probablement pas dans le système/etc/ssh/ssh_known_hosts
, ilssh
n'a donc aucun moyen de savoir si l'hôte à l'autre extrémité de la connexion est vraiment domain.com. (Si la mauvaise clé est/etc
entrée, une personne disposant de privilèges administratifs devra mettre à jour le fichier à l'échelle du système.)Je vous encourage fortement à envisager également d'authentifier les utilisateurs avec des clés. De cette façon,
ssh-agent
peut stocker du matériel clé pour plus de commodité (plutôt que tout le monde doit entrer son mot de passe pour chaque connexion au serveur), et les mots de passe ne passent pas sur le réseau.la source
sudo ssh-keygen -R domain.com
peut renommer votreknown_hosts
fichier existantknown_hosts.old
et créer une copie qui n'est lisible que par root . (-rw------- root root
) Vous pouvez facilement lechown
renvoyer à l'utilisateur approprié, mais vous pourriez également perdre un après-midi à déboguer pourquoi git est cassé. : DAre you sure you want to continue connecting (yes/no)?
. Ne faites pas la même erreur que moi. Vous devez taperyes
.Comme je l'ai déjà répondu dans Clonage, git repo provoque une erreur - La vérification de la clé d'hôte a échoué. fatal: l'extrémité distante a raccroché de manière inattendue , ajoutez le GitHub à la liste des hôtes autorisés:
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
la source
J'ai eu le même problème, mais en utilisant des clés SSH. D'après la réponse de Tupy, ci-dessus, j'ai compris que le problème était que le fichier known_hosts n'était pas présent ou que github.com n'était pas présent dans la liste des hôtes connus. Voici les étapes que j'ai suivies pour le résoudre -
mkdir -p ~/.ssh
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
ssh-keygen -t rsa -C "user.email"
$ cat ~/.ssh/id_rsa.pub
et copiez-la.la source
touch
commande échouerait dans le cas où le~/.ssh
répertoire n'existe pas, donc l'étape 1 était toujours requise. De plus, vous n'avez pas besointouch
du fichier avant d'utiliser la>>
redirection. Il sera créé si nécessaire (mais seulement le fichier, pas le chemin complet, donc ilmkdir -p
est toujours nécessaire). L'-p
option le fait fonctionner au cas où le répertoire existe déjà.ssh-keyscan
qui manque dans les documents Github sur l'ajout d'une nouvelle clé ssh.Dockerfile
manque d'autorisation. L'ajout de la 2e étape a résolu ce problème! Merci pour l'excellent travailCela se produit car github n'est pas actuellement dans vos hôtes connus.
Vous devriez être invité à ajouter github à vos hôtes connus. Si cela ne s'est pas produit, vous pouvez exécuter
ssh -T [email protected]
à nouveau pour recevoir l'invite.la source
Pour moi, je viens de taper "oui" à l'invite qui demande "Êtes-vous sûr de vouloir continuer à vous connecter (oui / non)?" plutôt que d'appuyer simplement sur Entrée.
la source
J'ai eu le même problème sur un système nouvellement installé, mais c'était un problème udev. Il n'y avait pas de
/dev/tty
nœud, j'ai donc dû faire:la source
Si vous êtes dans un intranet de bureau (sinon dangereux) qui est toujours protégé par des pare-feu, il suffit d'avoir les lignes suivantes dans votre ~ / .ssh / config
Hôte *
StrictHostKeyChecking no
UserKnownHostsFile = / dev / null
la source
Ce qui a fonctionné pour moi a été d'ajouter d'abord ma clé SSH du nouvel ordinateur, j'ai suivi ces instructions de GitLab - ajouter une clé SSH . Notez que depuis que je suis sur Win10, j'ai dû faire toutes ces commandes dans Git Bash sur Windows (cela ne fonctionnait pas dans le shell cmd DOS normal).
Là encore, dans Git Bash, j'ai dû faire un
git clone
repo avec lequel j'avais des problèmes, et dans mon cas, j'ai dû le cloner sous un nom différent car je l'avais déjà localement et je ne voulais pas perdre mes commits. Par exempleEnsuite, je suis invité à l'ajouter à la liste des hôtes connus, la question pourrait être celle-ci:
J'ai tapé "oui" et cela a finalement fonctionné, vous devriez généralement obtenir un message similaire à celui-ci:
Remarque : si vous êtes sous Windows, assurez-vous que vous utilisez Git Bash pour toutes les commandes, cela ne fonctionnait pas dans le shell cmd normal ou le powershell, je devais vraiment le faire dans Git Bash.
Enfin, j'ai supprimé le deuxième dépôt de clone (
myRepo2
dans l'exemple) et je suis retourné à mon premier dépôt et j'ai finalement pu faire toutes les choses Git comme d'habitude dans mon éditeur préféré VSCode.la source
Si vous utilisez git pour Windows.
Le client GUI ajoute la clé pour vous
~/.ssh/known_hosts
. Ceci est plus facile à retenir si vous ne le faites pas souvent et évite également d'avoir à utiliser la ligne de commande git (les lignes de commande Windows standard n'ont pas d'ssh-keyscan
exécutable).la source
Lorsque le serveur distant souhaite se connecter au référentiel privé, il s'authentifie via ssh. Créez la paire de clés privée-publique avec ssh-keygen ou si vous disposez déjà de la clé publique-privée. copiez et collez la clé publique dans les paramètres du dépôt privé.
YourPrivateRepo -> Paramètres -> Clés de déploiement -> Ajouter une clé de déploiement -> Collez la clé publique.
Maintenant, le serveur distant pourrait se connecter au dépôt privé.
REMARQUE: les clés de déploiement ont uniquement accès à la lecture du référentiel. Besoin d'autoriser explicitement l'accès en écriture.
la source
Cela signifie que votre clé d'hôte distant a été modifiée (peut être un changement de mot de passe d'hôte),
Votre terminal a suggéré d'exécuter cette commande en tant qu'utilisateur root
Vous devez supprimer ce nom d'hôte de la liste des hôtes sur votre PC / serveur. Copiez la commande suggérée et exécutez-la en tant qu'utilisateur root.
Essayez encore, j'espère que cela fonctionne.
la source
Lorsqu'on lui a demandé:
Are you sure you want to continue connecting (yes/no)?
Tapez oui comme réponse
C'est ainsi que j'ai résolu mon problème. Mais si vous essayez de simplement appuyer sur le bouton Entrée, cela ne fonctionnera pas!
la source
Vous pouvez utiliser votre "git url" au format URL 'https "dans le Jenkinsfile ou où vous voulez.
git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'
la source
Je faisais face à la même erreur à l'intérieur de DockerFile pendant la construction alors que l'image était publique. J'ai fait peu de modifications dans Dockerfile.
la source
J'ai eu le même problème, malheureusement j'ai utilisé l'IHM GitExtensions et j'ai oublié que j'avais écrit une phrase secrète. Avec HMI .... oubliez ça! N'entrez pas de phrase secrète lorsque vous générez votre clé!
la source
J'ai reçu ce message quand j'ai essayé
git clone
un repo qui n'était pas le mien. Le correctif consistait à bifurquer puis à cloner.la source