Estoy tratando de conectarme a un repositorio remoto de Git 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 se ejecuta en una de mis máquinas aparece el siguiente error:
La verificación de la clave del host ha fallado.
fatal: no se pudo leer desde el repositorio remoto.
No estamos usando claves SSH para conectarnos a este repositorio, por lo que no estoy seguro de por qué Git está buscando una en esta máquina en particular.
ssh://
Respuestas:
Se está conectando a través del protocolo SSH, como lo indica el
ssh://
prefijo en su URL de clonación. Usando SSH, cada host tiene una clave. Los clientes recuerdan la clave de host asociada con una dirección en 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 para domain.com ha cambiado. Si esto no le parece sospechoso , elimine la clave anterior de su caché local editando
${HOME}/.ssh/known_hosts
para eliminar la línea de domain.com o dejando que una utilidad SSH lo haga por usted conDesde aquí, registre la clave actualizada ya sea haciéndola usted mismo con
o, equivalentemente, dejar que
ssh
lo haga por usted la próxima vez que se conecte congit fetch
,git pull
ogit push
(o incluso un ol llano'ssh domain.com
), respondiendo que sí cuando se le soliciteLa razón de este aviso es domain.com ya no está en su
known_hosts
después de eliminarlo y presumiblemente no en el sistema/etc/ssh/ssh_known_hosts
, por lo quessh
no tiene forma de saber si el host en el otro extremo de la conexión es realmente domain.com. (Si hay una clave incorrecta/etc
, alguien con privilegios administrativos tendrá que actualizar el archivo de todo el sistema).Le recomiendo que considere que los usuarios también se autentiquen con claves. De esa manera,
ssh-agent
puede almacenar material clave por conveniencia (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.fuente
sudo ssh-keygen -R domain.com
puede cambiar el nombre de suknown_hosts
archivo existente para que seaknown_hosts.old
, y crear una copia que solo sea legible por root . (-rw------- root root
) Puedechown
devolverlo fácilmente al usuario apropiado, pero también puede desperdiciar una tarde depurando por qué git está roto. : DAre you sure you want to continue connecting (yes/no)?
. No cometas el mismo error que yo. Tiene que escribiryes
. Simplemente presionando enter no selecciona sí por defectoComo respondí anteriormente en Clonación, el repositorio git causa un error: la verificación de la clave del host falló. fatal: el extremo remoto se colgó inesperadamente , agregue GitHub a la lista de hosts autorizados:
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
fuente
Tuve el problema similar, pero, usando claves SSH. Por la respuesta de Tupy, más arriba, 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"
$ cat ~/.ssh/id_rsa.pub
y cópiela.fuente
touch
comando fallaría en caso de que el~/.ssh
directorio no exista, por lo que el paso 1 aún era obligatorio. Además, no necesitatouch
el archivo antes de usar la>>
redirección. Se creará si es necesario (pero solo el archivo, no la ruta completa, por lo que aúnmkdir -p
se necesita). La-p
opción lo hace funcionar en caso de que el directorio ya exista.ssh-keyscan
que falta en los documentos de Github al agregar una nueva clave ssh.Dockerfile
falta de permiso. Agregar el segundo paso aquí solucionó ese problema. Gracias por el gran trabajoEsto está sucediendo porque github no está actualmente en sus hosts conocidos.
Debería pedirte que agregues github a tus hosts conocidos. Si esto no ha sucedido, puede ejecutar
ssh -T [email protected]
para recibir el mensaje nuevamente.fuente
Para mí, solo tenía que escribir "sí" en el mensaje que pregunta "¿Está seguro de que desea continuar conectando (sí / no)?" en lugar de simplemente presionar Enter.
fuente
Tengo el mismo problema en un sistema recién instalado, pero este fue un problema de udev. No había
/dev/tty
nodo, así que tuve que hacer:fuente
Si está en la intranet de la oficina (por lo demás peligrosa) que siempre está protegida por firewalls, simplemente tenga las siguientes líneas en su ~ / .ssh / config
Host *
StrictHostKeyChecking no
UserKnownHostsFile = / dev / null
fuente
Lo que funcionó para mí fue agregar primero mi clave SSH de la nueva computadora, seguí estas instrucciones de GitLab: agregar clave SSH . Tenga en cuenta que desde que estoy en Win10, tuve que hacer todos estos comandos en Git Bash en Windows (no funcionaba en el cmd Shell de DOS normal).
Por otra parte, en Git Bash, tuve que hacer uno
git clone
de los repositorios con los que tuve problemas, y en mi caso tuve que clonarlo con un nombre diferente ya que ya lo tenía localmente y no quería perder mis compromisos. Por ejemploLuego recibí el mensaje para agregarlo a la lista de hosts conocidos, la pregunta podría ser esta:
Escribí "sí" y finalmente funcionó, normalmente debería recibir un mensaje similar a este:
Nota : si está en Windows, asegúrese de usar Git Bash para todos los comandos, esto no funcionó en cmd shell o powershell normal, realmente tuve que hacer esto en Git Bash.
Por último, eliminé el segundo repositorio de clones (
myRepo2
en el ejemplo) y volví a mi primer repositorio y finalmente pude hacer todas las cosas de Git como de costumbre en mi editor favorito VSCode.fuente
Si está utilizando git para Windows.
El cliente GUI agrega la clave para que usted lo haga
~/.ssh/known_hosts
. Esto es más fácil de recordar si no lo hace con frecuencia y también evita la necesidad de usar la línea de comando git (las líneas de comando estándar de Windows no tienen elssh-keyscan
ejecutable.fuente
Cuando el servidor remoto desea conectarse al repositorio privado, se autenticaría a través de ssh. Cree el par de claves pública-privada con ssh-keygen o si ya tiene la clave pública-privada. copie y pegue la clave pública en la Configuración del repositorio privado.
YourPrivateRepo -> Configuración -> Implementar claves -> Agregar clave de implementación -> Pegar la clave pública.
Ahora el servidor remoto podría conectarse al repositorio privado.
NOTA: Las claves de implementación solo tienen acceso para leer el repositorio. Necesidad de permitir explícitamente el acceso de escritura.
fuente
Significa que se cambió la clave de host remoto (puede ser un cambio de contraseña de host)
Su terminal sugirió ejecutar este comando como usuario root
Debe eliminar ese nombre de host de la lista de hosts en su PC / servidor. Copie el comando sugerido y ejecútelo como usuario root.
Inténtalo de nuevo, espero que esto funcione.
fuente
Cuando se le preguntó:
Are you sure you want to continue connecting (yes/no)?
Escriba yes como respuesta
Así es como resolví mi problema. Pero si intentas presionar el botón enter, ¡no funcionará!
fuente
Puedes usar tu "git url" en formato URL 'https' en el archivo Jenkins o donde quieras.
git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'
fuente
Estaba enfrentando el mismo error dentro de DockerFile durante el tiempo de compilación mientras la imagen era pública. Hice poca modificación en Dockerfile.
fuente
Tuve el problema similar, desafortunadamente utilicé la HMI de GitExtensions y olvidé que escribí una frase de contraseña. Con HMI ... ¡olvídalo! ¡No ingrese la frase de contraseña cuando genere su clave!
fuente
Recibí este mensaje cuando intenté
git clone
un repositorio que no era mío. La solución fue bifurcar y luego clonar.fuente