2009-10-31 17 views
37

Trabajo en una red donde los sistemas de una dirección IP cambian con frecuencia. Se mueven dentro y fuera del banco de trabajo y DHCP determina la IP que obtienen.SSH en Linux: Deshabilitar la verificación de claves de host para hosts en la subred local (known_hosts)

No parece fácil cómo desactivar el almacenamiento en caché/comprobación de claves del host para no tener que editar ~/.ssh/known_hosts cada vez que necesito conectarme a un sistema.

No me importa la autenticidad del host, todos están en el segmento de red 10.x.x.x. y estoy relativamente seguro de que nadie me está MITMANDO.

¿Existe una forma "adecuada" de hacer esto? No me importa si esto me avisa, pero detenerme y hacer que limpie mi entrada known_hosts para esa IP cada vez es molesto y en este escenario no proporciona seguridad porque rara vez me conecto a los sistemas más de una vez o dos veces y luego el IP se le da a otro sistema.

Miré en el archivo ssh_config y vi que puedo configurar grupos para que se pueda preservar la seguridad de conectarme a máquinas externas y podría ignorar la verificación de direcciones locales. Esto sería óptimo.

De la búsqueda He encontrado algunas opiniones muy fuertes sobre el asunto, que van desde "No te metas con eso, es por seguridad, solo trata con eso" hasta "Esto es lo más estúpido que he tenido que lidiar" con, solo quiero apagarlo "... estoy en algún lugar en el medio. Solo quiero poder hacer mi trabajo sin tener que purgar una dirección del archivo cada pocos minutos.

Gracias.

Respuesta

9

Suponiendo que está usando OpenSSH, creo que se puede establecer la opción

CheckHostIP no 

para evitar Host IPS de ser comprobado en known_hosts. Desde la página del manual:

CheckHostIP

Si este indicador se establece en 'sí', ssh (1) comprobará, además, el host IP dirección en el archivo known_hosts. Este permite a ssh detectar si una clave de host ha cambiado debido a la suplantación DNS. Si la opción está configurada en 'no', no se ejecutará la verificación . El valor predeterminado es 'sí'.

+0

que he añadido una sección al final del archivo de configuración con el anfitrión 10.0.0. * Y por debajo que puse CheckHostIP sin ¿Sabes si necesito poner todas las otras configuraciones allí o si esto es además del * host anterior? Tendré que esperar hasta que inicie sesión en un sistema al que se le haya emitido una dirección IP "usada" para asegurarme de que este cambio funcione. Aceptaré tu respuesta si eso funciona. Gracias. – C4colo

+0

Parece que no es el truco al 100% ... no estoy seguro de por qué, tendré que jugar con eso un poco más y ver si puedo lograr que haga lo que quiero. – C4colo

+0

¿Qué quiere decir con "100%"? ¿Funciona a veces pero no a otros? –

80

Esta es la configuración que uso para nuestros siempre cambiantes anfitriones EC2:

[email protected]:~$ cat ~/.ssh/config 
Host *amazonaws.com 
     IdentityFile ~/.ssh/keypair1-openssh 
     IdentityFile ~/.ssh/keypair2-openssh 
     User ubuntu 
     StrictHostKeyChecking no 
     UserKnownHostsFile /dev/null 

Esto desactiva la confirmación de acogida StrictHostKeyChecking no y también utiliza un buen truco para evitar que ssh de ahorrar el anfitrión identificar a un archivo persistente UserKnownHostsFile /dev/null tenga en cuenta que, como valor agregado, agregué el usuario predeterminado con el que me conectaré al host y la opción de probar varias claves privadas de identificación diferentes.

+1

Wow, ese/dev/null hack es brillante. Siempre me olvido de lo obvio que pueden ser las cosas simples en Linux. Gracias. – C4colo

+7

Si esa solución funciona para usted, acepte una respuesta válida como respuesta a esta pregunta, recuerde que las otras personas visitarán esta página de preguntas. Si algo no funciona para usted, publique otra pregunta en los comentarios. –

+2

Si configuro UserKnownHostsFile en/dev/null, recibo esta advertencia cada vez 'Advertencia: Se agregó permanentemente '10 .9.8.7' (RSA) a la lista de hosts conocidos. ' ¿Alguna manera de apagarlo? –

8

Esto me llevó un tiempo encontrarlo. El caso de uso más común que he visto es cuando tienes túneles SSH para redes remotas. Todas las soluciones aquí produjeron advertencias que rompieron mis scripts de Nagios.

La opción que necesitaba era:

NoHostAuthenticationForLocalhost yes 

Lo cual, como su nombre indica también sólo se aplica a localhost.

2

Si desea desactivar esta manera temporal o sin necesidad de cambiar los archivos de configuración de SSH, puede utilizar:

ssh -o UserKnownHostsFile=/dev/null [email protected] 
Cuestiones relacionadas