Puedo poner un fingerprint determinado a mi servidor?

Buenas compaleros,

Tengo un problemilla, y es que por una actualizacion y no se que historias mas algo ha debido pasar con mi servidor ssh. El caso es que al configurarlo de nuevo se ha generado una nueva clave con su correspondiente fingerprint y ahora los dispositivos que se conectaban a él no lo hacen automaticamente con el intercambio de claves, ya que el fingerprint no coincide con el antiguo.

¿Como podría hacer para dejar el servidor como estaba y no tener que ir uno a uno aceptando el nuevo fingerprint en ls dispositivos que se conectan a él?

Muchas gracias
Si no tienes un respaldo de la clave privada del servidor (generalmente es /etc/ssh/ssh_host_rsa_key) pues olvídate del fingerprint antiguo ya que seguramente fue sobreescrito al reconfigurar el paquete y regenerar las llaves (aunque me parece raro ya que la reconfiguración no debería regenerarlas a no ser que borrases las llaves antes).
Lo que puedes hacer es borrar la linea de known_hosts de los clientes para que añadan el nuevo
Zokormazo escribió:Lo que puedes hacer es borrar la linea de known_hosts de los clientes para que añadan el nuevo

Si hago eso al menos pedirá una vez la confirmacion manual para la conexion y al ser dispositivos autonomos me hace la puñeta :(

codestation escribió:Si no tienes un respaldo de la clave privada del servidor (generalmente es /etc/ssh/ssh_host_rsa_key) pues olvídate del fingerprint antiguo ya que seguramente fue sobreescrito al reconfigurar el paquete y regenerar las llaves (aunque me parece raro ya que la reconfiguración no debería regenerarlas a no ser que borrases las llaves antes).


Si tengo respaldo, de hecho he comprobado los finger print de las claves que tengo en /etc/ssh_host... con los que salvé y son los mismos, pero debe ser que mi caso es un poco especial ya que los dispositivos que se conectan a este servidor son un poco antiguos y parece que el servidor les devuelve un fingerprint (sha1) distinto a si me conecto desde un PC, por ejemplo. Pero es que no se de donde saca ese fingerprint, ya que no coincide con ninguna clave de las que tengo en el servidor, ni dsa, ni rsa, ni key a secas, ni ná [mad]
Ademas si modifico la configuracion de sshd_config para apuntar la HostKey al directorio .ssh del home del usuario con el que me conecto me peta y no me lanza el servidor [+furioso]

Cualquier consejo es bienvenido!
Por que no agregas el nuevo fingerprint a esos dispositivos de manera automática? En cada dispositivo ejecutas lo siguiente:

ssh-keyscan <host> >> ~/.ssh/known_hosts


O en caso de que tu host sea algo viejo

ssh-keyscan -t rsa,dsa <host> >> ~/.ssh/known_hosts


Si quieres evitar entradas duplicadas (en caso de haber aceptado el fingerprint nuevo en algunos dispositivos y no en otros)

ssh-keygen -R <host>
ssh-keygen -R <ip_address>
ssh-keygen -R <host>,<ip_address>


Con eso te aseguras de que no quede ninguna entrada del host antes de usar el ssh-keyscan.

Puedes automatizarlo todo con herramientas como Fabric, Ansible, pssh, etc. Hay un montón de ellos que te evitan hacerlo a mano.
Muchas gracias.
Lo probaré el lunes que ahora solo tengo acceso a un dispositivo y despues de tantas pruebas ya no sé ni en que estado lo dejé.
Ademas, echaré un ojo a las herramientas que dices que no las conozco y lo mismo me son utiles en otros menesteres tambien.

Solo una cosa que no acabo de entender. De donde me puede estar cogiendo el dispositivo remoto el fingerprint del servidor para que no se igual a ninguna key existente en el servidor. He comprobado todas con el comando
ssh-keygen -lf clave

y no hay ningun fingerprint igual al que recibo al conectarme desde el dispositivo al servidor... yo no entender [mamaaaaa]

Gracias!
5 respuestas