SSH: host conocido con dirección dinámica


12

Necesito conectarme a un host con una dirección IP dinámica.

Cada vez que cambia su IP, SSH me solicita la validación de huellas digitales:

The authenticity of host '...' can't be established.
RSA key fingerprint is ....
Are you sure you want to continue connecting (yes/no)?

¿Sería posible pasar SSH la clave pública del host para que:

  1. SSH valida la autenticidad del host automáticamente
  2. La clave de host no se almacena en el archivo known_hosts

Esta pregunta difiere de ¿Cómo puedo evitar la verificación de host de SSH para hosts conocidos? dado que otras preguntas tienen como objetivo suprimir la validación de SSH, aunque no quiero suprimirla: quiero autenticar el host, solo usando la clave pública del host (que sé y tenerlo almacenado en un archivo) en lugar de SSH known_hostsarchivo.

Para mí, la otra pregunta parece ser acerca de conectarse a un servidor diferente cada vez, en lugar de conectarse a un único servidor conocido con una IP dinámica.

Respuestas:


8

La mejor solución (es decir, la más cercana a lo que quiero) que pude encontrar es usar la opción HostKeyAlias: usará un nombre de host que especifique para acceder known_hosts(en lugar de la IP a la que me estoy conectando).

Necesitaré agregar la clave pública del host para known_hostsusar un nombre de host dado (por ejemplo:) myhosty luego conectarme a él usando:

ssh -o 'HostKeyAlias myhost' ...

Sé que ha pasado un tiempo, pero: si esto responde mejor a tu pregunta, acéptala.
kittykittybangbang

Nota para otros: puede agregar el HostKeyAliasvalor de configuración a su ~/.ssh/configarchivo o incluso al /etc/ssh/ssh_configarchivo global .
kael

6

El known_hostsarchivo no es solo la clave, también contiene el nombre de host que utiliza para conectarse y, si es posible, la IP que corresponde. Es por eso que ve el error, está comparando el triplete que obtiene del servidor con lo que almacenó en el archivo known_hosts.

Por lo tanto, si la IP sigue cambiando, puede deshabilitarla CheckHostIPy eso significa que solo verificará el nombre de host y la clave de host. Si esos permanecen inalterados, debería tener menos quejas, pero correrá el riesgo si alguien secuestra su DNS.


1
Gracias por la respuesta, lo probaré lo antes posible. ¿Por qué estaría en la lista de todos modos? Si conozco la clave pública SSH de un host, eso debería ser suficiente para estar totalmente seguro en cualquier caso (a menos que alguien logre robar la clave privada de ese host), ¿no?
peoro

Y aún así no me gusta si tengo que ser honesto. Usando esa bandera, SSH seguirá accediendo known_hosts. ¿Por qué? ¿No puedo decir "ssh connect to X cuya clave pública es Y"? Por qué no? ¿No sería eso 100% seguro?
peoro

La idea es que la clave de host es parte de un todo más grande, y eso por sí solo no es suficiente garantía para asegurarse de que el servidor al que se está conectando sigue siendo el que se conectó anteriormente. Debe asegurarse de que la IP y las entradas de DNS también coincidan ... recuerde, este es un shell basado en la red, por lo que la red también debe verificarse.
NickW
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.