Avviso "L'identificazione dell'host remoto è cambiato" durante la connessione tramite SSH


21

Ho ricevuto questo messaggio oggi durante il tentativo di accedere al mio server. Cosa dovrei fare? Cosa sta succedendo?

$ 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.

2
A parte questo, potresti voler evitare di accedere localmente e da remoto come root, e invece utilizzare utenti non privilegiati combinati con sudo.
Steve Beattie,

Risposte:


12

Recentemente hai reinstallato il sistema operativo sul tuo server o qualcosa del genere? Ciò causerebbe questo.

Per risolvere questo problema: http://www.cyberciti.biz/faq/warning-remote-host-identification-has-changed-error-and-solution/

Soluzione n. 1: rimuovere le chiavi usando ssh-keygen

Utilizzare l' -Ropzione per rimuovere tutte le chiavi appartenenti al nome host da un file known_hosts. Questa opzione è utile per eliminare gli host con hash. Se il tuo nome host remoto è server.example.com, inserisci:

$ 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

Ora puoi connetterti all'host senza problemi.

Soluzione n. 2: aggiungere la chiave host corretta /home/user/.ssh/known_hosts

Non è necessario eliminare l'intero file known_hosts, ma solo la linea offensiva in quel file. Ad esempio se hai 3 server come segue.

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==

Per eliminare il 2o server (myserver.com), apri il file:

# vi +2 .ssh/known_hosts

E premi il comando dd per eliminare la riga. Salva e chiudi il file. Oppure usa il seguente

$ vi ~/.ssh/known_hosts

Ora vai alla riga # 2, digita il seguente comando

:2

Ora cancella la riga con dd ed esci:

dd
:wq

Oppure puoi usare il comando sed come segue per cancellare la chiave offensiva alla riga # 44:

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

Soluzione 3: basta eliminare il file known_hosts Se si dispone di un solo server SSH

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

Prova a connetterti di nuovo con ssh
Ora dovresti essere in grado di connettere il tuo server tramite ssh:

ssh username@server-ip-here
ssh nixcraft@server1.cyberciti.biz

Successivamente, riceverai un nuovo prompt per aggiungere la chiave ~/.ssh/known_hostscome segue:

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.

9
Si noti che, se non è stato modificato le chiavi host SSH del server, si dovrebbe non sostituire la copia della chiave host, in quanto può essere un segno che qualcuno sta tentando di sovvertire le comunicazioni eseguendo un attacco man-in-the-middle.
Kees Cook,

7

Da quello che posso dire, tutte queste risposte riguardano la soppressione dell'avvertimento, invece di gestirlo. In breve, l'avviso ti dice che il server non sembra più come una volta; vedi https://en.wikipedia.org/wiki/Man_in_the_middle_attack per il motivo per cui questo potrebbe essere un pericolo.

Leggi man ssh, in particolare questa sezione:

VERIFICA DEI TASTI HOST

Quando ci si collega a un server per la prima volta, viene presentata all'utente un'impronta digitale della chiave pubblica del server (a meno che l'opzione StrictHostKeyChecking sia stata disabilitata). Le impronte digitali possono essere determinate usando ssh-keygen (1) :

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

Per essere al sicuro, tu (o qualcuno di cui ti fidi) dovresti aver eseguito questo comando prima sul server a cui ti stai connettendo. Ti darà un'impronta digitale simile a quella indicata nell'avvertimento nella domanda. Naturalmente, spesso non disponi di queste informazioni, ma se hai motivo di sospettare che qualcosa sia attivo, eseguire quel comando è il modo per verificare se la firma del server è davvero cambiata o se potrebbe esserci qualcosa di sospetto.


1
Usalo se il tuo host fornisce un'impronta digitale sha256 invece di un hash md5. ssh -o FingerprintHash=md5 example.org
Declan McKenna il

1
Altro su FingerprintHash: superuser.com/questions/929566/… (vale a dire che dovrebbe essere preferito sha256, ma potresti non conoscere quel valore se non hai aggiornato abbastanza di recente)
unhammer

2

Ho riscontrato lo stesso problema e se non si desidera eliminare l'intero known_hostsfile, è possibile eseguire il comando seguente:

ssh-keygen -R 10.10.10.69

Non ci sono problemi con l'eliminazione di known_hosts. Dovrai solo aggiungere ogni server a cui ti connetti, all'elenco ogni volta che ti colleghi a loro. Potrebbe rovinare anche i tuoi script, perché gli host non sono ancora affidabili. L'avviso si verifica quando la firma dell'host (il computer che si sta tentando di connettere a nuove chiavi generate, in genere a causa di una reinstallazione o rotazione delle chiavi).


0

Se ritieni che questo avviso sia un falso positivo, puoi eliminare i tuoi / root / ssh / known_hosts per iniziare una nuova verifica.


3
Per favore non farlo, perderai gli altri host conosciuti. Invece, se sei sicuro che si tratti di un falso positivo, elimina la riga specifica: "known_hosts: 8" riga 8 in questo caso.
Roger Light,

0

Se hai reinstallato di recente il server o hai modificato in altro modo la chiave host, è probabilmente sicuro rimuovere la riga 8 dal tuo file ~ / .ssh / known_hosts e aggiungere nuovamente il server (inviandolo e rispondendo "sì "quando richiede la verifica chiave)


0

Poiché il tuo server è su una rete locale, puoi essere abbastanza sicuro.

Se hai reinstallato il tuo sistema, questo è normale, ma invece di rimuovere il tuo known_hosts file, ti consiglio di farlo echo "" > ~/.ssh/known_hosts


Le persone possono ancora giocare brutti scherzi su una rete locale. Le reti aziendali o scolastiche potrebbero avere molto spazio per non essere affidabili.
Azendale,


0

Copia questa riga, ma inserisci il nome utente e il nome host / IP per usere remote-server:

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

Per esempio:

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

E incollalo sul tuo terminale locale ed eseguilo. Questo ha funzionato per me.


0

Sul nodo client su cui si sta emettendo gli ssh,

vi ~/.ssh/known_hosts

Elimina tutte le righe che iniziano con gli indirizzi IP che si trovano sulla stessa rete dell'IP in cui stai tentando di accedere. Ciò costringerà il nodo client ad aggiungere (ECDSA) all'elenco di host noti in modo permanente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.