¿Por qué SSHing a un servidor me da la IDENTIFICACIÓN DEL HOST REMOTO HA CAMBIADO, pero mi archivo known_hosts y el servidor no han cambiado?

3

Poner esto aquí en un intento por ayudar a otros que puedan encontrarse con este oscuro problema.

Recientemente actualicé OSX de Mavericks a El Capitán. Luego intenté iniciar sesión en un sistema en el que había iniciado sesión anteriormente, y ssh lanzó este error:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
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 a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
SHA256:Btm9/3heWnRLKNiuhw4efh6sQWqCr/dNJUD87ejdR6k.
Please contact your system administrator.
Add correct host key in /Users/myuser/.ssh/known_hosts to get rid of this message.
Offending RSA key in /Users/myuser/.ssh/known_hosts:33
ECDSA host key for real.hostname.com has changed and you have requested strict checking.
Host key verification failed.

Busqué en mi archivo de hosts conocidos y veo la clave pública:

real.hostname.com,192.168.0.138 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHxFq6UNxndgThogOpKGYHK0HpmK1niGPBdNVyo9Q8zX//ms3joRH+tvL0RigJ+i5f0qSUjK2j80BYyCjnCXkYJ+YIPOGioGiuFGuoFutvJLH4iXT652b2WxJJwPqAvz70Xez1ToFxsIl8H0noUNTmlXRsfY0G5gX+089aghq3hH8OGUIGoyGCrv7Dpdh+tiMDXQqz0R4yhOa0iAojv+SVqbzArT8/AxC8VzuNDww6Fi96rxK1vaFg9SJEegwAZzWcbUFopA4cb8r7sQ5tHG56L5zX9/Yadg4/Pf02O6dP62M1rW7x6VoG/gEa72axqV/izm7/ws7SASsiKtHKRijf

Luego fui a otra máquina, verifiqué que la clave anterior coincidía con la del archivo known_hosts de la otra máquina. Luego me conecté desde esa otra máquina a real.hostname.com sin ningún error o advertencia.

¿Por qué pasó esto?

Stuart Horner
fuente

Respuestas:

3

La clave aquí es la actualización de Mavericks a El Capitán. Resulta que el cliente ssh se ha actualizado en El Capitán, por lo que cuando intenta conectarse a un servidor ssh, ahora usa un tipo de clave diferente en lugar de "ssh-rsa".

En este caso, ssh intenta usar "ecdsa-sha2-nistp256". En un sistema más nuevo, si ejecuta "ssh-keyscan" en el dominio, escupirá el tipo de clave ssh-rsa y ecdsa-sha2-nistp256:

myname@myhost-1:~$ ssh-keyscan real.hostname.com
# real.hostname.com SSH-2.0-OpenSSH_6.6.1
real.hostname.com ecdsa-sha2-nistp256 k8DaAFOzRyv0kbP8Ua48IIk8DaAFOzRyvAAIbmlzdHAyNTYAAABBBAOq0InBTTdCqbaackF5biy0QghSFZBV/MRoL936yOAXgPAnZlHl+zQ5weK7nM2UNt2qGxqWKLSZ6gE6slZnQkw=
# real.hostname.com SSH-2.0-OpenSSH_6.6.1
real.hostname.com ssh-rsa k8DaAFOzRyv0kbP8Ua48IIk8DaAFOzRyvk8DaAFOzRyv0kbP8Ua48IIk8DaAFOzRyvFq6UNxndgThogOpKGYHK0HpmK1niGPBdNVyo9Q8zX//ms3joRH+tvL0RigJ+i5f0qSUjK2j80BYyCjnCXkYJ+k8DaAFOzRyv0kbP8Ua48IIiXT652b2WxJJwPqAvz70Xez1ToFxsIl8H0noUNTmlXRsfY0G5gX+HGXoLuLsr9VEghX2oyGCrv7Dpdh+tiMDXQqz0R4yhOa0iAojv+SVqbzArT8/AxC8VzuNDww6Fi96rxK1vaFg9SJEegwAZzWcbUFopA4cb8r7sQ5tHG56L5zX9/Yadg4/Pf02O6dP62M1rW7x6VoG/gEa72axqV/izm7/ws7SASsiKtHKRijf

Cuando la versión más reciente de ssh intenta hacer coincidir la cadena de tipo de clave ecdsa-sha2-nistp256 con la cadena de tipo de clave ssh-rsa, falla, en lugar de reconocer que son dos tipos de clave diferentes para la misma máquina.

Considero que esto es un error, pero no tengo idea de dónde lo publicaría.

Stuart Horner
fuente