Error de Git: "Falló la verificación de la clave del host" al conectarse al repositorio remoto
Estoy intentando conectarme a un repositorio Git remoto que reside en mi servidor web y clonarlo en mi máquina.
Estoy usando el siguiente formato para mi comando:
git clone ssh://[email protected]/repository.git
Esto ha funcionado bien para la mayoría de los miembros de mi equipo. Por lo general, después de ejecutar este comando, Git solicitará la contraseña del usuario y luego ejecutará la clonación. Sin embargo, cuando lo ejecuto en una de mis máquinas, aparece el siguiente error:
Error en la verificación de la clave del host.
fatal: no se pudo leer desde el repositorio remoto.
No utilizamos claves SSH para conectarnos a este repositorio, por lo que no estoy seguro de por qué Git busca una en esta máquina en particular.
Como respondí anteriormente en Clonar git repo provoca un error: falló la verificación de la clave del host. fatal: El extremo remoto se colgó inesperadamente , agregue GitHub a la lista de hosts conocidos:
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
Te estás conectando a través del protocolo SSH, como lo indica el ssh://
prefijo en la URL de tu clon. Al utilizar SSH, cada host tiene una clave. Los clientes recuerdan la clave de host asociada con una dirección particular y se niegan a conectarse si una clave de host parece cambiar. Esto evita los ataques del hombre en el medio.
La clave de host domain.example
ha cambiado. Si esto no le parece sospechoso , elimine la clave antigua de su caché local editándola ${HOME}/.ssh/known_hosts
para eliminar la línea domain.example
o dejando que una utilidad SSH lo haga por usted.
ssh-keygen -R domain.example
Desde aquí, registre la clave actualizada ya sea haciéndolo usted mismo con
ssh-keyscan -t rsa domain.example >> ~/.ssh/known_hosts
o, de manera equivalente, deja ssh
que lo haga por ti la próxima vez que te conectes con git fetch
, git pull
, o git push
(o incluso simplemente ssh domain.example
) respondiendo sí cuando se te solicite
No se puede establecer la autenticidad del host 'dominio.ejemplo (abcd)'. La huella digital de la clave RSA es XX:XX:...:XX. ¿Estás seguro de que quieres continuar conectándote (sí/no)?
El motivo de este mensaje es domain.example
que ya no está en su servidor known_hosts
después de eliminarlo y presumiblemente tampoco en el sistema /etc/ssh/ssh_known_hosts
, por lo que ssh
no hay forma de saber si el host en el otro extremo de la conexión es realmente domain.example
. (Si la clave incorrecta está en /etc
, alguien con privilegios administrativos tendrá que actualizar el archivo de todo el sistema).
Le recomiendo encarecidamente que considere que los usuarios también se autentiquen con claves. De esa manera, ssh-agent
puede almacenar material de claves para su comodidad (en lugar de que todos tengan que ingresar su contraseña para cada conexión al servidor), y las contraseñas no pasan por la red.
Tuve un problema similar, pero usando claves SSH. A partir de la respuesta de Tupy anterior, descubrí que el problema es que el archivo conocido_hosts no está presente o que github.com no está presente en la lista de hosts conocidos. Estos son los pasos que seguí para resolverlo:
mkdir -p ~/.ssh
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
ssh-keygen -t rsa -C "user.email"
- abra la clave pública con este comando
$ cat ~/.ssh/id_rsa.pub
y cópiela. - Agregue la clave id_rsa.pub a la lista de claves SSH en su perfil de GitHub.
Esto sucede porque github no se encuentra actualmente en sus hosts conocidos.
Se le pedirá que agregue github a sus hosts conocidos. Si esto no ha sucedido, puede ejecutar ssh -T [email protected]
para recibir el mensaje nuevamente.