2009-04-09 19 views
14

Tengo 2 servidores ssh detrás de un firewall nat en una ubicación que cambia su wan IP todos los días. Siempre están en la misma dirección IP wan en un tiempo determinado pero en diferentes puertos.¿Cómo se maneja la verificación de clave de host ssh con 2 hosts diferentes en la misma (pero cambiante) dirección IP?

Estoy conectando al servidor A de esta manera:

ssh -p 22001 [email protected] 

y al servidor B:

ssh -p 22002 [email protected] 

Así que tengo 2 claves de host diferentes para la misma IP, y también cuando los cambios de propiedad intelectual incluso una IP diferente para el mismo host.

Tengo que seguir borrando una y otra vez la otra clave o la anterior (en caso de cambio de IP) en el archivo known_hosts.

Estoy dudando en desactivar la verificación de clave, porque esto sería menos seguro. Pero recibir una advertencia todo el tiempo también es inseguro (porque ignoro tales advertencias todo el tiempo). ¿Hay una mejor solución?

Esto tiene que ver con mi vieja pregunta aquí, pero no es lo mismo:

SSH login warning message on a server with 2 DNS names

+0

¿Por qué se cierra en lugar de trasladarse a [superusuario] (https : //superuser.com/) o [Unix y Linux] (https://unix.stackexchange.com/)? –

Respuesta

32

creo que esto va a funcionar:

Crear un archivo config en su directorio .ssh de la siguiente manera:

Host server1 
    Hostname x1.example.com 
    HostKeyAlias server1 
    CheckHostIP no 
    Port 22001 
    User karl 

Host server2 
    Hostname x2.example.com 
    HostKeyAlias server2 
    CheckHostIP no 
    Port 22002 
    User karl 

Explicación A continuación (desde man ssh_config)

CheckHostIP

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

HostKeyAlias ​​

Especifica un alias que se debe utilizar en lugar del nombre real anfitrión cuando mirando hacia arriba o guardar la clave de host en la clave archivos de base de acogida. Esta opción es útil para tunelizar conexiones SSH o para múltiples servidores que se ejecutan en un solo host.

La línea Username y Port evita tener que dar esas opciones en la línea de comandos, también, lo que sólo puede utilizar:

% ssh server1 
% ssh server2 
+0

¡Esto es genial! Funciona muy bien, gracias! – user89021

+1

Solo me pregunto: ¿hay alguna forma de que ssh almacene el puerto IP AND en known_hosts?IIUC, esto permitiría algo de protección contra la suplantación DNS, ¿verdad? – Hbf

+1

@Hbf en mi sistema MacOS X el puerto (si no es estándar) _es_ almacenado en 'known_hosts'. – Alnitak

Cuestiones relacionadas