Sustituir una clave antigua de known_hosts
Es posible que más de una vez nos hayamos encontrado con un mensaje donde nuestro sistema nos indica que la clave publica de nuestro servidor, o del servidor al que nos queremos conectar ha cambiado o a otras posibilidades que ya indicaremos más adelante.
usuari@debian:~$ ssh servidor-ssh
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
00:ff:00:ff:00:ff:00:ff:00:ff:00:ff:00:ff:00:ff.
Please contact your system administrator.
Add correct host key in /home/usuario/.ssh/known_hosts to get rid of this message.
Offending key in /home/usuario/.ssh/known_hosts:8
RSA host key for localhost has changed and you have requested strict checking.
Host key verification failed.Este error se produce debido a ha fallado la que ha fallado la autenticación de la clave pública ssh del servidor. Esto podría ser debido a:
- Un intento de ataque man in the middle.
- Reinstalación del sistema donde se esta ejecutando
SSHy no nos hemos acordado de hacer una copia de su clave.
Esto provoca que por seguridad, en clientes configurados con la opción StrictHostKeyChecking=yes no te permita conectar al servidor.
Una manera rápida de solucionar esto sería conectar forzando ignorar este aviso:
usuari@debian:~$ ssh -o "StrictHostKeyChecking=yes" servidor-sshPor supuesto, esta no es la manera más adecuada de hacerlo, primero, porque si lo hacemos sin ninguna comprobación podríamos ser víctimas de ataque que hablábamos antes, y segundo, porque el aviso no desaparecerá en futuras conexiones.
Si efectivamente verificamos que se trata de una simple cambio de IP, DNS o reinstalación de sistema (comprobando que el nuevo fingerprint coincide con el del servidor), tenemos que borrar la clave vieja.
Antiguamente, podíamos editar el archivo ~/.ssh/known_hosts directamente, pero actualmente los nombres de los hosts en este archivo estan ocultos mediante HMAC. Es por ello que para borrar dicha clave tendremos que ejecutar:
usuari@debian:~$ ssh-keygen -R servidor-sshLa próxima vez que conectemos, el cliente ssh preguntará si deseamos conectar y guardar la nueva clave.