Advertencia "La identificación remota del host ha cambiado" cuando se conecta a través de SSH

21

Recibí este mensaje hoy cuando intento iniciar sesión en mi servidor. ¿Qué tengo que hacer? ¿Que esta pasando?

$ ssh 10.10.10.69
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
3d:1b:02:9e:b2:b8:f0:f7:c6:4f:94:96:f6:e3:c0:d1.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:8
RSA host key for 10.10.10.69 has changed and you have requested strict checking.Host key verification failed.
myusuf3
fuente
2
Por otro lado, es posible que desee evitar iniciar sesión local y remotamente como root y, en su lugar, usar usuarios no privilegiados combinados con sudo.
Steve Beattie

Respuestas:

12

¿Recientemente reinstaló el sistema operativo en su servidor o algo así? Eso causaría esto.

Para solucionar esto: http://www.cyberciti.biz/faq/warning-remote-host-identification-has-changed-error-and-solution/

Solución n. ° 1: eliminar claves con ssh-keygen

Use la -Ropción para eliminar todas las claves que pertenecen al nombre de host de un archivo conocido_hosts. Esta opción es útil para eliminar hosts hash. Si su nombre de host remoto es server.example.com, ingrese:

$ ssh-keygen -R {server.name.com}
$ ssh-keygen -R {ssh.server.ip.address}
$ ssh-keygen -R {ssh.server.ip.address} -f {/path/to/known_hosts}
$ ssh-keygen -R server.example.com

Ahora, puede conectarse al host sin ningún problema.

Solución # 2: Agregue la clave de host correcta en /home/user/.ssh/known_hosts

No es necesario eliminar todo el archivo conocido_hosts, solo la línea ofensiva en ese archivo. Por ejemplo, si tiene 3 servidores de la siguiente manera.

myserver1.com,64.2.5.111 ssh-rsa  
 AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0EnGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94AAAAB3NzaC1yc2EAAAABIwAAAIEA11FV0E
nGahT2EK8qElocjuHTsu1jaCfxkyIgBTlxlrOIRchb2pw8IzJLOs2bcuYYfa8nSXGEcWyaFD1ifUjfHelj94H+uv304/ZDz6xZb9ZWsdm+264qReImZzruAKxnwTo4dcHkgKXKHeefnBKyEvvp/2ExMV9WT5DVe1viVw
    k=
    myserver2.com,125.1.12.5 ssh-rsa
 AAAAB3NzaC1yc2EAAAABIwAAAQEAtDiERucsZzJGx/1kUNIOYhJbczbZHN2Z1gCnTjvO/0mO2R6KiQUP4hOdLppIUc9GNvlp1kGc3w7B9tREH6kghXFiBjrIn6VzUO4uwrnsMbnAnscD5EktgI7fG4ZcNUP 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGxQz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/IyI4NxHhhpltYZKW/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBf
    w=
    myserver3.com,125.2.1.15 ssh-rsa 
 5+J7sa3o+rtmOuiFxCA690DXUJ8nX8yDHaJfzMUTKTGx0lVkphVsvYD5hJzm0eKHv+oUXRT9v+QMIL+um/IyI4NxHhhpltYZKW
 as3533dka//sd33433////44632Z6MGnAazIviHBldxtGrFwvEnk82/Qz4M/H2P8L2R//qLj5s3ofzNmgSM9lSEhZL/M7L0vKeTObue1SgAsXADtK3162a/Z6MGnAazIviHBldxtGrFwvEnk82+GznkO3IBZt5vOK2heBnqQBfw==

Para eliminar el segundo servidor (myserver.com), abra el archivo:

# vi +2 .ssh/known_hosts

Y presione el comando dd para eliminar la línea. Guarde y cierre el archivo. O use siguiente

$ vi ~/.ssh/known_hosts

Ahora ve a la línea # 2, escribe el siguiente comando

:2

Ahora borre la línea con dd y salga:

dd
:wq

O puede usar el comando sed de la siguiente manera para eliminar la clave ofensiva en la línea # 44:

$ sed -i 44d ~/.ssh/known_hosts

Solución 3: simplemente elimine el archivo known_hosts si solo tiene un servidor ssh

$ cd
$ rm .ssh/known_hosts
$ ssh ras.mydomain.com

Intente conectarse con ssh nuevamente.
Ahora debería poder conectar su servidor a través de ssh:

ssh username@server-ip-here
ssh [email protected]

A continuación, recibirá una nueva solicitud para agregar la clave de la ~/.ssh/known_hostssiguiente manera:

The authenticity of host '10.86.115.66 ()' can't be established.
ECDSA key fingerprint is 4e:10:42:39:53:85:7f:89:89:dc:89:84:8d:79:e7:ed.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.86.115.66' (ECDSA) to the list of known hosts.
Isaias
fuente
99
Tenga en cuenta que si no cambiaban las claves de host SSH de su servidor, usted debe no reemplaza su copia de la clave de host, ya que puede ser una señal de que alguien está tratando de subvertir sus comunicaciones mediante la realización de un ataque man-in-the-middle.
Kees Cook
7

Por lo que puedo decir, todas estas respuestas tratan de suprimir la advertencia, en lugar de tratarla. En resumen, la advertencia le dice que el servidor no se ve como solía verse; vea https://en.wikipedia.org/wiki/Man_in_the_middle_attack para ver por qué esto puede ser un peligro.

Lea man ssh, especialmente esta sección:

VERIFICACIÓN DE LLAVES DE ANFITRIÓN

Cuando se conecta a un servidor por primera vez, se presenta una huella digital de la clave pública del servidor (a menos que la opción StrictHostKeyChecking haya sido desactivada). Las huellas digitales se pueden determinar usando ssh-keygen (1) :

   $ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key

Para estar seguro, usted (o alguien de su confianza) debería haber ejecutado este comando primero en el servidor al que se está conectando. Le dará una huella digital parecida a la que aparece en la advertencia de la pregunta. Por supuesto, a menudo no tiene esta información, pero si tiene razones para sospechar que algo está funcionando, ejecutar ese comando es la forma de verificar si la firma del servidor realmente ha cambiado, o si puede haber algo sospechoso.

desarmar
fuente
1
Use esto si su host proporciona una huella digital sha256 en lugar de un hash md5. ssh -o FingerprintHash=md5 example.org
Declan McKenna
1
Más sobre FingerprintHash: superuser.com/questions/929566/... (. Sha256 es decir, se debe preferir, pero puede que no sepan que el valor si no se ha actualizado recientemente suficiente)
unhammer
2

Me enfrenté al mismo problema, y ​​si no desea eliminar todo el known_hostsarchivo, puede ejecutar el siguiente comando:

ssh-keygen -R 10.10.10.69

No hay ningún problema con la eliminación de conocido_hosts. Solo tendrá que agregar cada servidor al que se conecte, a la lista cada vez que se conecte a ellos. También podría arruinar sus scripts, porque aún no se confía en los hosts. La alerta se produce cuando la firma del host (la computadora que está intentando conectar a las nuevas claves generadas, generalmente debido a una reinstalación o rotación de claves).

theTuxRacer
fuente
0

Si cree que la advertencia es un falso positivo, puede eliminar sus / root / ssh / known_hosts para comenzar una nueva verificación.

Ta Coen
fuente
3
No hagas esto, perderás los otros hosts conocidos. En cambio, si está seguro de que es un falso positivo, elimine la línea específica: "known_hosts: 8" línea 8 en este caso.
Roger Light, el
0

Si recientemente reinstaló el servidor, o si cambió la clave de host, probablemente sea seguro eliminar la línea 8 de su archivo ~ / .ssh / known_hosts y volver a agregar el servidor (enviando un mensaje de texto y respondiendo "sí" "cuando solicita verificación de clave)

elzapp
fuente
0

Como su servidor está en una red local, puede estar bastante seguro.

Si reinstaló su sistema, esto es normal, pero en lugar de eliminar su archivo known_hosts, recomendaría hacerlo echo "" > ~/.ssh/known_hosts

Popinou
fuente
La gente todavía puede jugar trucos en una red local. Las redes empresariales o escolares podrían tener mucho espacio para no ser confiables.
Azendale
0

ssh -q también hace este truco.

Habitual
fuente
0

Copie esta línea, pero ingrese el nombre de usuario y el nombre de host / IP para usery remote-server:

ssh-keygen -f "/home/user/.ssh/known_hosts" -R remote-server

Por ejemplo:

ssh-keygen -f "/home/dev1/.ssh/known_hosts" -R 192.168.199.108

Y péguelo en su terminal local y ejecútelo. Esto funcionó para mí.

dheerendra
fuente
0

En el nodo del cliente donde está emitiendo el ssh,

vi ~/.ssh/known_hosts

Elimine todas las líneas que comienzan con direcciones IP que están en la misma red que la IP en la que está intentando ingresar. Esto obligará al nodo del cliente a agregar permanentemente (ECDSA) a la lista de hosts conocidos.

Anthony Awuley
fuente