pública - SSH en Linux: deshabilitar la comprobación de claves de host para hosts en la subred local(known_hosts)
ssh rsa key (5)
Trabajo en una red donde los sistemas en una dirección IP cambiarán con frecuencia. Se mueven dentro y fuera del banco de trabajo y DHCP determina la IP que obtienen.
No parece sencillo cómo desactivar el almacenamiento / almacenamiento en caché de la clave 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.xxx y estoy relativamente seguro de que nadie me está molestando.
¿Hay una forma "correcta" 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.
Busqué en el archivo ssh_config y vi que puedo configurar grupos para que se pueda preservar la seguridad de la conexión a máquinas externas y podría ignorar la búsqueda de direcciones locales. Esto sería óptimo.
Después de buscar, encontré algunas opiniones muy fuertes sobre el tema, que van desde "No te metas con eso, es por seguridad, solo trata con eso" hasta "Esta es la cosa más estúpida con la que he tenido que lidiar, simplemente 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.
Como todas las demás respuestas explican cómo desactivar la verificación de clave, aquí hay dos ideas que preservan la comprobación de clave, pero evite el problema:
Usa nombres de host. Esto es fácil si controla el servidor DHCP y puede asignar nombres propios. Después de eso, puedes usar los nombres de host conocidos, los ips cambiantes no importan.
Usa nombres de host. Incluso si no controla el servidor DHCP, puede usar un servicio como
avahi
, que transmitirá el nombre del servidor en nuestra red local. Se ocupa de resolver colisiones y otros problemas.Utilice la firma de clave de host. Después de que haya construido una máquina, fírmela con una CA local (para eso no necesita una CA global confiable). Después de eso, no necesita confiar en cada host por separado en su máquina. Es suficiente que confíe en la CA firmante en el archivo known_hosts. Más información en la página de manual de
ssh-keygen
o en muchas publicaciones de blog ( https://www.digitalocean.com/community/tutorials/how-to-create-an-ssh-ca-to-validate-hosts-and-clients-with-ubuntu )
Esta es la configuración que uso para nuestros hosts EC2 en constante cambio:
maxim@maxim-desktop:~$ cat ~/.ssh/config
Host *amazonaws.com
IdentityFile ~/.ssh/keypair1-openssh
IdentityFile ~/.ssh/keypair2-openssh
User ubuntu
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
Esto deshabilita la confirmación del host StrictHostKeyChecking no
y también utiliza un truco agradable para evitar que ssh guarde la identificación del host en un archivo persistente UserKnownHostsFile /dev/null
tenga en cuenta que como un valor agregado he agregado el usuario predeterminado con el que me conectaré al host y la opción de probar varias claves privadas de identificación diferentes.
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 lo indica, solo se aplica a localhost.
Si desea desactivar esto temporalmente o sin tener que cambiar los archivos de configuración de SSH, puede usar:
ssh -o UserKnownHostsFile=/dev/null username@hostname
Suponiendo que está utilizando OpenSSH, creo que puede configurar el
CheckHostIP no
opción para evitar que las IP del host se comprueben en known_hosts. Desde la página man:
CheckHostIP
Si este indicador está establecido en ''sí'', ssh (1) también verificará la dirección IP del host en el archivo known_hosts. Esto permite a ssh detectar si una clave de host cambió debido a la suplantación DNS. Si la opción está configurada en ''no'', la verificación no se ejecutará. El valor predeterminado es ''sí''.