web-dev-qa-db-fra.com

Le clone/pull de Git se fige continuellement dans la case "Enregistrer la clé dans le cache?"

J'essaie de cloner un référentiel de mon compte BitBucket sur mon ordinateur portable Windows 10 (sous GitBash). J'ai effectué toutes les étapes nécessaires à la connexion (configuration de ma clé SSH, vérifiée avec succès par SSHing [email protected], etc.). Cependant, chaque fois que j'essaie de cloner un référentiel, l'invite raccroche continuellement après avoir confirmé que je souhaite mettre en cache la clé de Bitbucket. 

User@Laptop MINGW64 /C/Repos
$ git clone [email protected]:mygbid/test.git
Cloning into 'test'...
The server's Host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40
If you trust this Host, enter "y" to add the key to
PuTTY's cache and carry on connecting.
If you want to carry on connecting just once, without
adding the key to the cache, enter "n".
If you do not trust this Host, press Return to abandon the
connection.
Store key in cache? (y/n) y

Aucun fichier n'est cloné et le résultat est un référentiel vide. Essayer d'initier un tirage sur git Origin Master de ce référentiel demande également de mettre en cache la clé, puis se bloque sans retour. Bien que je ne demande pas que la clé soit mise en cache lorsque je fais un test SSH, les opérations git demandent toujours la clé à chaque fois avant d’échouer.

En l'absence de messages d'erreur, je ne sais vraiment pas ce qui ne va pas. J'ai essayé plusieurs pensions, y compris de très petites, sans aucun succès.

108
MarathonStudios

J'ai eu ce problème lors du clonage d'un dépôt sur Windows 10 aussi. 

Je l'ai contourné en utilisant l'interface graphique de PuTTY vers SSH sur le serveur en question (dans votre cas: bitbucket.org), puis sur «Oui» lorsque l'invite vous demande si vous souhaitez enregistrer la clé du serveur dans le cache. Lancer à nouveau la commande clone a ensuite fonctionné pour moi!

126
theChumpus
  1. Ouvrir mastic
  2. Tapez le nom d'hôte (comme bitbucket.org)
  3. Cliquez sur Ouvrir
  4. Cliquez sur Oui dans la fenêtre contextuelle pour mettre en cache la clé de l'hôte.
  5. Fermer mastic
86
cambunctious

Pour ce faire depuis powershell, ouvrez une fenêtre powershell et collez-y:

echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh [email protected]
echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh [email protected]
echo y | & 'C:\Program Files (x86)\GitExtensions\PuTTY\plink.exe' -ssh [email protected]

ou avec la version autonome de PuTTY:

echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh [email protected]
echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh [email protected]
echo y | & 'C:\Program Files (x86)\PuTTY\plink.exe' -ssh [email protected]

A noter également que PuTTY stocke les hôtes connus sous une clé de registre :

HKEY_CURRENT_USER\SoftWare\SimonTatham\PuTTY\SshHostKeys

Pour raccourcir ce qui précède, vous pouvez placer ce qui suit dans un fichier .reg et l'exécuter:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\SshHostKeys]
"rsa2@22:github.com"="0x23,0xab603b8511a67679bdb540db3bd2034b004ae936d06be3d760f08fcbaadb4eb4edc3b3c791c70aae9a74c95869e4774421c2abea92e554305f38b5fd414b3208e574c337e320936518462c7652c98b31e16e7da6523bd200742a6444d83fcd5e1732d03673c7b7811555487b55f0c4494f3829ece60f94255a95cb9af537d7fc8c7fe49ef318474ef2920992052265b0a06ea66d4a167fd9f3a48a1a4a307ec1eaaa5149a969a6ac5d56a5ef627e517d81fb644f5b745c4f478ecd082a9492f744aad326f76c8c4dc9100bc6ab79461d2657cb6f06dec92e6b64a6562ff0e32084ea06ce0ea9d35a583bfb00bad38c9d19703c549892e5aa78dc95e250514069"
"rsa2@22:Gist.github.com"="0x23,0xab603b8511a67679bdb540db3bd2034b004ae936d06be3d760f08fcbaadb4eb4edc3b3c791c70aae9a74c95869e4774421c2abea92e554305f38b5fd414b3208e574c337e320936518462c7652c98b31e16e7da6523bd200742a6444d83fcd5e1732d03673c7b7811555487b55f0c4494f3829ece60f94255a95cb9af537d7fc8c7fe49ef318474ef2920992052265b0a06ea66d4a167fd9f3a48a1a4a307ec1eaaa5149a969a6ac5d56a5ef627e517d81fb644f5b745c4f478ecd082a9492f744aad326f76c8c4dc9100bc6ab79461d2657cb6f06dec92e6b64a6562ff0e32084ea06ce0ea9d35a583bfb00bad38c9d19703c549892e5aa78dc95e250514069"
"rsa2@22:bitbucket.org"="0x23,0xb9b88df3578371a7eb80c78bcda14fb30da436f11ca932a5fd5a8b6adfcc681df7a59cb4cb7ac966d9eac11daa38ebdbc0a6582a210ed4ee95a8d101c4abc925e942ab47535d64f9a5b3b68035c2ea1e900d709a1e8ea938718f532f9805a190446b92bac3040126225ae9d8374bc2008f106979d631734c7453f78c70091f4783b288869cb3c1941a784cd9baad823be27333833dc1f488a45b85952be75cf0a64965662302e3915378dcd5cfcd3ec903d804a29dff2fdf19df5deba4534b09e4dea6e44f152e339b3c43be98ddadfc56533192e216a3d673f00b4aa9cc9e7870acd8b6adb7e0feb77f2292fc2dede94819def3eb1e785541a06ab31ccf725f"

PuTTY-hosts.reg Gist

18
Tim Abell

Même après avoir effectué la solution de contournement mentionnée dans d'autres réponses, vous pouvez rencontrer une erreur telle que:

FATAL ERROR: Disconnected: Aucune méthode d'authentification prise en charge disponible (serveur envoyé: publickey)

Pour résoudre les deux problèmes à la fois, changez git bash pour utiliser SSH au lieu de PuTTY en ajoutant ce qui suit dans votre fichier ~/.profile (C:\Users\<Username>\.profile). Si vous ne possédez pas déjà ce fichier, créez un nouveau fichier avec cette ligne.

GIT_SSH="/usr/bin/ssh.exe"

Ouvrez ensuite une nouvelle fenêtre git bash et essayez à nouveau votre git clone ou git pull.

Notez que vous devrez peut-être créer une clé SSH si vous n'en avez pas déjà une. Pour ce faire, suivez les instructions du site Bitbucket .

Voir cette SO question pour des informations connexes.

2
Schparky

J'ai réussi à le faire fonctionner en exécutant directement plink. Après le lancement de pageant, utilisez directement la commande plink - plink.exe -agent -v [email protected] et ensuite, ce git fonctionnera sans accroc.

2
benjaminRRR

Pour résoudre ce problème, j'ai configuré GitBash pour qu'il utilise plink avec l'option -batch. L'option désactive toutes les invites - plink se terminera sans suspension et ne mettra aucune empreinte de clé dans le cache. 

Pour ajouter le paramètre -batch à la commande plink exécutée par GitBash, vous pouvez définir une option de configuration git:

git config --global core.sshCommand "plink -batch"

Ou définissez la variable d'environnement GIT_SSH_COMMAND.

La sortie lorsque vous clonez un repo à partir d'un hôte inconnu ressemblera à ceci:

The server's Host key is not cached in the registry. You
have no guarantee that the server is the computer you
think it is.
The server's rsa2 key fingerprint is:
ssh-rsa 2048 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40
Connection abandoned.
fatal: Could not read from remote repository.

Après ce message, vous pouvez ajouter une clé à mettre en cache avec la commande suivante:

echo y | plink [email protected]

REMARQUE: Veuillez vérifier si plink est dans votre PATH. Vous pouvez également utiliser un chemin de type UNIX dans l’option de configuration GitBash, par exemple:

/c/Program\ Files/PuTTY/plink.exe -batch
2
Paweł Weselak

Dans votre shell git bash, vérifiez l'existence de GIT_SSH:
echo $GIT<tab><tab>
S'il existe et qu'il est réglé sur PuTTY, exécutez:
unset GIT_SSH
Vous voudrez probablement mettre cela dans l'un des scripts de démarrage de git bash.
Ce n'est PAS une solution universelle. Cela a fonctionné dans notre cas particulier.

0
Richard Jessop

Cela semble un peu bête, mais après avoir essayé tout ce qui précède, j'ai décidé de réinstaller Git Bash avec les options par défaut et cela a fonctionné. 

0
Vlad