¿Git clone / pull se congela continuamente en "Almacenar clave en caché?"

160

Estoy intentando clonar un repositorio de mi cuenta de BitBucket en mi computadora portátil con Windows 10 (ejecutando GitBash). He completado todos los pasos necesarios para conectarme (configurar mi clave SSH, verificado por SSHing [email protected], etc.). Sin embargo, cada vez que intento clonar un repositorio, el mensaje se cuelga continuamente después de confirmar que quiero almacenar en caché la clave 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

No se clonan archivos y el resultado es un repositorio vacío. Intentar iniciar un maestro de origen de extracción de git desde este repositorio también solicita almacenar en caché la clave, luego se cuelga sin comentarios. A pesar de no pedir que se guarde en caché la clave cuando hago un SSH de prueba, las operaciones de git siempre piden la clave cada vez que fallan.

Sin mensajes de error con los que trabajar, estoy realmente perdido en cuanto a lo que está mal. He intentado múltiples repositorios, incluidos los muy pequeños, sin ningún éxito.

MarathonStudios
fuente

Respuestas:

189

También tuve este problema al clonar un repositorio en Windows 10.

Lo solucioné utilizando la GUI de Putty para SSH en el servidor en cuestión (en su caso: bitbucket.org) y luego hice clic en 'Sí' cuando el mensaje le pregunta si desea guardar la clave del servidor en la memoria caché. ¡Ejecutar el comando clonar nuevamente y luego funcionó para mí!

theChumpus
fuente
21
Esto no me lo solucionó directamente, pero me llevó a darme cuenta de que el problema estaba relacionado con GitBash usando Putty para la autenticación ssh en lugar de OpenSSH. Cuando eliminé la variable del sistema GIT_SSH y reinicié GitBash, todo funciona bien. ¡Gracias!
MarathonStudios
2
Usar puttypara agregar githubclave en caché funcionó para mí
roble
44
Esto funcionó para mí en Win 7 usando la consola de comandos. Desearía que alguien pudiera decirme por qué sucedió esto en lugar de solo una solución.
soulsabr
1
¿Alguien puede decir cómo hacer por encima de dicha solución?
Shreyan Mehta
2
@Shreyan Mehta acaba de abrir masilla, bajo el nombre de host pegar [email protected] (o cualquier host que esté utilizando). Asegúrese de seleccionar el tipo de conexión de SSH. El número de puerto debe ser 22. También asegúrese de tener la clave ssh cargada en el concurso antes de iniciar esto.
Mr.Invisible
111
  1. Masilla abierta
  2. Escriba el nombre del host (como bitbucket.org)
  3. Haga clic en Abrir
  4. Haga clic en Sí en la ventana emergente para almacenar en caché la clave del host
  5. Masilla Cercana
rebelde
fuente
Yo tuve el mismo problema. Mirando la salida de git, parece que git no puede almacenar en caché la clave del host (probablemente un error). Por lo tanto, debe hacerlo utilizando la GUI PuTTY.
Cambunctious
He intentado todos los pasos, pero cuando selecciono bien 'y' o 'n' nada happeds Git Bash no hace nada
testsingh
¿Escribiste el nombre de host correcto en el paso 2? ¿Intentaste reiniciar Git Bash?
Cambunctious
1
¿En qué se diferencia esto de la respuesta aceptada?
zb226
1
He votado esta respuesta ya que proporciona pasos. No me gusta cómo es una solución alternativa (tiene que repetir esto para cada servidor SSH que conecte) al igual que la respuesta aceptada.
ShooShoSha
26

Para hacer esto desde powershell, abra una ventana de powershell y pegue lo siguiente:

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]

o con la versión independiente 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]

También vale la pena saber que la masilla almacena hosts conocidos bajo una clave de registro :

HKEY_CURRENT_USER\SoftWare\SimonTatham\PuTTY\SshHostKeys

Para atajar lo anterior, puede poner lo siguiente en un .regarchivo y ejecutarlo:

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

Tim Abell
fuente
2
Consulte también las preguntas y respuestas anteriores sobre este aspecto de plink: serverfault.com/questions/420526/…
Josip Rodin el
2
FATAL ERROR: Disconnected: No supported authentication methods available (server sent: publickey)
Azimuth
En el caso de que su control remoto funcione en un puerto que no sea 22, debe ejecutar plink con el puerto pasándole un -P <port>argumento.
PitaJ
20

Logré que funcione ejecutando plink directamente, después de ejecutar el concurso, use el comando plink directamente, plink.exe -agent -v [email protected]luego, después de que este git funcione sin colgarse.

benjaminRRR
fuente
3
Buena solución! Esto debería haber marcado como respuesta
ZenithS
Esta es la mejor respuesta.
Brian Lacy
5

Para solucionar este problema, configuré GitBash para usar plink con la -batchopción. La opción deshabilita todas las indicaciones: el plink terminará sin colgarse y no agregará ninguna huella digital clave al caché.

Para agregar el -batchparámetro al comando plink ejecutado por GitBash, puede establecer una opción de configuración de git:

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

O establecer GIT_SSH_COMMANDla variable de entorno.

El resultado al clonar un repositorio desde un host desconocido será similar a este:

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.

Después de este mensaje, puede agregar una clave al caché con el comando:

echo y | plink [email protected]

OBSERVACIÓN : compruebe si hay plink enPATH . Alternativamente, use una ruta similar a UNIX en la opción de configuración GitBash, por ejemplo:

/c/Program\ Files/PuTTY/plink.exe -batch
frenchu
fuente
1
Hola, recibo este mensaje: ERROR FATAL: desconectado: no hay métodos de autenticación compatibles disponibles (servidor enviado:
clave pública
4

Incluso después de realizar la solución mencionada en otras respuestas, puede encontrar un error como:

ERROR FATAL: desconectado: no hay métodos de autenticación compatibles disponibles (servidor enviado: clave pública)

Para resolver ambos problemas a la vez, cambie git bash para usar SSH en lugar de PuTTY agregando lo siguiente a su ~/.profilearchivo ( C:\Users\<Username>\.profile). Si aún no tiene este archivo, cree un nuevo archivo con esta línea.

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

Luego abra una nueva ventana de git bash e intente su git cloneo git pullnuevamente.

Tenga en cuenta que esto puede requerir que cree una clave SSH si aún no tiene una. Para hacer esto, siga las instrucciones en el sitio de Bitbucket .

Vea esta pregunta SO para obtener información relacionada.

Schparky
fuente
1

En su shell git bash, verifique la existencia de GIT_SSH:
echo $GIT<tab><tab>
si existe y está configurado en masilla, ejecute:
unset GIT_SSH
Probablemente quiera poner esto en uno de los scripts de inicio de git bash.
Esta NO es una solución universal. Funcionó en nuestro caso particular.

Richard Jessop
fuente
¿Qué / dónde es un 'script de inicio de git bash'? Solo estoy familiarizado con Linux real.
Jeff K
Hay varios scripts de inicio. Algunos se encuentran en el directorio / etc; otros pueden estar en su directorio de inicio. Los scripts de inicio que se ejecutan dependen de las opciones de la línea de comandos para su shell (interactivo vs inicio de sesión). Estos son relevantes independientemente del sistema operativo en el que se ejecuta el shell.
Richard Jessop
Windows no tiene el directorio '/ etc'.
Jeff K
Los shells de bash que se ejecutan en Windows sí. Por lo general, se asignan a algún lugar fuera del directorio base (o instalación) del shell. Echa un vistazo a git bash y Cygwin bash. Recuerde, estos son shells que se parecen y funcionan de manera muy similar a un shell en un sistema Linux.
Richard Jessop el
0

Suena un poco tonto, pero después de probar todo lo anterior, decidí reinstalar Git Bash con las opciones predeterminadas y funcionó.

Vlad
fuente