Git dice "Advertencia: añadido permanentemente a la lista de hosts conocidos"


192

Cada vez que uso git para interactuar con un control remoto, como al tirar o empujar, me aparece el siguiente mensaje:

Advertencia: Se agregó permanentemente '...' (RSA) a la lista de hosts conocidos.

¿Cómo puedo evitar que se muestre este mensaje molesto? Es solo una molestia: todo funciona correctamente.


1
¿Realmente quieres decir cada vez? ¿Le está dando un aviso del formulario The authenticity of host '...' can't be established. RSA key fingerprint is .... Are you sure you want to continue connecting (yes/no)?o lo ha suprimido? Si es así, ¿es la misma huella digital cada vez? Si no es así, da mucho miedo . La opción menos aterradora sería que de alguna manera no está logrando escribir en el archivo de hosts, por lo que lo intenta nuevamente cada vez. Echar un vistazo a ~/.ssh/known_hosts?
Cascabel

1
Si. <i> Cada vez </i> Sin embargo, no veo el mensaje "¿Estás seguro ...?", Tal vez lo he suprimido.
Donald Taylor

¿El host aparece en la lista ~/.ssh/known_hosts? (¿Está en la lista 5000 veces?) ¿Existe ~/.ssh/config/ contiene algo (especialmente un valor para StrictHostKeyChecking)?
Cascabel

El host aparece en ese archivo una vez, y es la única entrada.
Donald Taylor

2
Supongo que el contenido de su known_hostsarchivo es malo. Debería ser la clave de host, en una línea terriblemente larga. Si solo tiene el nombre de host allí (por ejemplo), no funcionará. Le recomiendo que elimine este archivo (si de hecho solo contiene la información para este único host) y permita que SSH lo cree la próxima vez que se conecte. Debería quedar en silencio después de eso.
tripleee

Respuestas:


240

Solución: cree un ~/.ssh/configarchivo e inserte la línea:

UserKnownHostsFile ~/.ssh/known_hosts

Luego verá el mensaje la próxima vez que acceda a Github, pero después de eso ya no lo verá porque el host se agrega al known_hostsarchivo. Esto soluciona el problema, en lugar de solo ocultar el mensaje de registro.

Este problema me estaba molestando durante bastante tiempo. El problema ocurre porque el cliente OpenSSH compilado para Windows no verifica el archivo known_hosts en~/.ssh/known_hosts

ssh -vvvvvvvvvvvvvvvvvvv git@github.com

debug3: check_host_in_hostfile: filename /dev/null
debug3: check_host_in_hostfile: filename /etc/ssh/ssh_known_hosts
debug3: check_host_in_hostfile: filename /dev/null
debug3: check_host_in_hostfile: filename /etc/ssh/ssh_known_hosts
Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts.

9
Sí, no considero que suprimir advertencias o errores sea una solución adecuada a un problema. ;)
Jeremiah Gowdy

1
Recientemente, enfrenté el mismo problema en mi máquina ubuntu. Comenzó a comportarse de esta manera después de usar una ~/.ssh/id_rsaclave diferente (de mi predeterminada ) para conectarme a un servidor. Como @JeremiahGowdy mencionó, lo he hecho debug3: load_hostkeys: loading entries for host "172.16.3.101" from file "/dev/null". ¿Por qué SSH comienza a usar /dev/nullas unknown_hosts después de cambiar la clave?
m-ric

66
¡Funciona genial! Finalmente la estúpida advertencia se detuvo. Por cierto en Windows, el ~en ~/.ssh/configes carpeta de inicio del usuario. Para abrirlo fácilmente, presione Win-R , escriba cmd Enter . El símbolo del sistema ya debería abrirse en su carpeta de inicio. Escriba cd .ssh Enter y luego start . Enter para abrir la carpeta en el Explorador de Windows. Luego puede crear el archivo de configuración en el Bloc de notas (sin extensión .txt al guardar). (Los usuarios profesionales pueden hacer eco directamente a un nuevo archivo en el símbolo del sistema ;)). Ejecute un comando git que involucra el control remoto dos veces (como git fetch), y listo.
ADTC

1
¿Por qué tienes 20 v para ssh?
bubakazouba

3
@bubakazouba Cuanto más v, más detallado es el registro, verifique los documentos para eso. Tres serían suficientes, veinte son una exageración: D
Petr Mánek

90

Agregue la siguiente línea a su archivo de configuración ssh ($ HOME / .ssh / config):

LogLevel=quiet

Si ejecuta ssh desde la línea de comando, agregue la siguiente opción a la cadena de comando:

-o LogLevel=quiet

Por ejemplo, lo siguiente imprime la versión de gcc instalada en machine.example.org (y sin advertencia):

ssh -o UserKnownHostsFile=/dev/null \
    -o StrictHostKeyChecking=no \
    -o LogLevel=quiet \
    -i identity_file \
    machine.example.org \
    gcc -dumpversion

1
Agregar "LogLevel = quiet" al archivo "config" funcionó. Gracias.
Donald Taylor el

3
Para mantener la seguridad, sería bueno poner el "LogLevel = quiet" dentro de una sección "Host".
Joe

39
LogLevel=quietes una mala idea, quiere que se muestren todos los errores, solo quiere evitar este error desagradable específico. Probablemente porque engañó a ssh para usarlo /dev/nullcomo known_hostsarchivo, probablemente porque quería desactivar la known_hostsverificación de huellas digitales, pero no pudo, porque los señores de ssh no se lo permitieron.
Elazar Leibovich

@bukzor loglevel=errortodavía muestra "Conexión a <servidor> cerrado" cuando se termina la conexión, lo que también es realmente molesto para las secuencias de comandos.
Guss

Voté en contra de esto ya que realmente no resuelve el problema. Simplemente lo esconde.
alaboudi

60

Ajuste LogLevela ERROR(no QUIET) en el ~/.ssh/configarchivo para evitar ver estos errores:

Host *
   StrictHostKeyChecking no
   UserKnownHostsFile /dev/null
   LogLevel ERROR

2
Esto funcionó mejor en mi caso, o puede especificar "-oLogLevel = ERROR" en la línea de comando
Brad

5

Ese mensaje es de SSH, que le advierte que se está conectando a un host al que nunca se ha conectado antes. No recomendaría desactivarlo, ya que significaría que podría perderse una advertencia sobre el cambio de una clave de host, lo que puede indicar un ataque MITM en su sesión SSH.


1
Pero me conecto a él de 10 a 15 veces al día y aún recibo esta advertencia.
Donald Taylor

@JackB. Mire ~/.ssh/known_hostsy vea si su anfitrión está allí.
Borealid

¿La clave está cambiando por alguna razón? Verifique la huella digital en el archivo frente a la huella digital que genera ssh. Además, ¿el modo de su directorio .ssh está establecido en 0700?
Jason Carreiro

2
@JasonCarreiro, soy un niño grande, sé que nadie sacará un ataque MITM dentro de mi rack, la seguridad es una compensación, y quiero que las nuevas computadoras funcionen de fábrica con la clave previamente compartida, sin necesidad de administrar una CA o ssh-keyscan.
Elazar Leibovich

4

Para suprimir mensajes de advertencia ssh, puede agregar las siguientes líneas a ~/.ssh/config:

Host *
LogLevel error

Eso deshabilitará las advertencias pero no los mensajes de error. Al igual que las otras configuraciones ~/.ssh/config, puede configurarlas LogLevelpor host si desea un control más detallado.


2

Principalmente significa que hay cambios para la clave para ese host ~/.ssh/known_hosts , y no la ACTUALIZARÁ automáticamente. Por lo tanto, cada vez que reciba este mensaje de advertencia.

Esto sucede a menudo para conectarse a las máquinas virtuales recreadas, lo que cambia la clave con la misma dirección IP

Solución

Si solo tiene una entrada, puede eliminar el ~/.ssh/known_hosts archivo y, después de la primera conexión, que la clave estará allí y no habrá mensajes de advertencia después de eso.

Si tiene varias entradas, puede usar el siguiente comando para eliminar

$ ssh-keygen -R <hostname>

Funciona bien para mí


0

Si está utilizando un repositorio de GitHub, considere usar la versión HTTPS de la URL para evitar este problema por completo:

Haga clic en el botón HTTP y clone esa URL en su lugar

Si clona su repositorio desde la aplicación Windows GitHub, esto es lo que usa para la URL remota. Tal vez ellos saben algo que nosotros no sabemos.


Nota: Si usa la autenticación de clave privada, no puede usar HTTP (S).
qwertzguy

0

Tengo la misma pregunta y descubrí que no hay un .ssharchivo en mi ~. Así que acabo de crear el .sshdirectorio bajo la ~ruta y el problema se resolvió.



0

Añadir clave ssh

ssh-keygen -t rsa -b 4096 -C "abc@abc.com"

eval "$(ssh-agent -s)"

ssh-add ~/.ssh/bitbucket_rsa

archivo de configuración de caja

crate ~/.ssh/config

agregue debajo de la línea.

UserKnownHostsFile ~/.ssh/known_hosts

Luego agregue la clave de publicación y clone su repositorio ... Hecho .....


0

Me enfrenté al mismo error en Linux / Cent OS VM y fue porque la IP estaba cambiando después de reiniciar. Para solucionar este problema, definí una IP estática en la red y agregué esa entrada al archivo / etc / hosts. Para IP estática, mencione un valor de rango ligeramente mayor. Por ejemplo, si su IP actual (ipconfig / ifconfig) es 192.168.0.102, la próxima vez después de reiniciar esto puede convertirse en 192.168.0.103. Así que defina su IP estática en la configuración de IPV4 como 192.168.0.181, que debería ser el truco.


trate de resaltar las palabras clave y sea claro con el formato que ayudará a llegar su respuesta para los demás
Agilanbu

0

En mi caso, fue porque el administrador que configuró el servidor configuró estas opciones en ~/.ssh/config

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

Lo que funcionó bien para la mayoría de los casos al no usar el ~/.ssh/known_hostsarchivo. Pero para el repositorio empresarial de gitlab, cada vez que daba la "Advertencia: permanentemente agregado ... a la lista de hosts conocidos".

Mi solución fue comentar la UserKnownHostsFile /dev/nulllínea, lo que permitió la creación de ~/.ssh/known_hosts. Entonces no dio más advertencias después de eso.

También puede tener entradas antiguas / inválidas en su known_hosts.

# find entry in ~/.ssh/known_hosts
ssh-keygen -F <hostname>

# delete entry in ~/.ssh/known_hosts
ssh-keygen -R <hostname>

-1

Estoy retirando mi solución debido a los continuos votos negativos.
Fue la mejor solución sin hackear el código fuente del cliente SSH.
Si alguien está interesado, verifique el historial de edición.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.