Cosa succede in background quando connetti un server per la prima volta usando ssh
Quando ci si connette a un server per la prima volta, il server chiede di confermare la connessione al sistema corretto. L'esempio seguente utilizza il comando ssh per connettersi a un host remoto denominato host03:
# ssh host03 The authenticity of host 'host03 (192.0.2.103)' can’t be established. ECDSA key fingerprint is ... Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'host03,192.0.2.103' (ECDSA) to the list of known hosts.
La convalida dell'host è una delle principali funzionalità di OpenSSH. Il comando verifica che ti stia connettendo all'host a cui pensi di connetterti. Quando si immette yes, il client aggiunge la chiave host pubblica del server al file ~/.ssh/known_hosts dell'utente, creando la directory ~/.ssh se necessario. La prossima volta che ci si connette al server remoto, il client confronta questa chiave con quella fornita dal server. Se le chiavi corrispondono, non ti viene chiesto se desideri continuare a connetterti.
Cosa causa l'errore di verifica della chiave dell'host non riuscito
Se qualcuno tenta di indurti con l'inganno ad accedere alla sua macchina in modo che possa annusare la tua sessione SSH, riceverai un avviso simile al seguente:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ 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 dd:cf:50:31:7a:78:93:13:dd:99:67:c2:a2:19:22:13. Please contact your system administrator. Add correct host key in /home/user01/.ssh/known_hosts to get rid of this message. Offending key in /home/lcz/.ssh/known_hosts:7 RSA host key for 192.168.219.149 has changed and you have requested strict checking. Host key verification failed.
Se ricevi un avviso come questo, fermati e determina se c'è un motivo per la modifica della chiave host del server remoto (ad esempio se SSH è stato aggiornato o se il server stesso è stato aggiornato). Se non c'è una buona ragione per la modifica della chiave host, non provare a connetterti a quella macchina finché non hai risolto la situazione.
Come correggere l'errore "verifica della chiave host non riuscita"
Metodo 1:rimozione manuale della vecchia chiave
1. Sul server di origine, le vecchie chiavi sono archiviate nel file ~/.ssh/known_hosts .
2. Solo se questo evento è legittimo, e solo se è noto con precisione il motivo per cui il server SSH presenta una chiave diversa, modificare il file known_hosts e rimuovere la chiave non più valida. Ogni utente nel client/server di origine ha i propri host_noti nella sua home directory, basta rimuovere la voce nel file di un utente specifico per il server di destinazione. Ad esempio:
– Se root vuole inviare un ssh al server, rimuove semplicemente la voce in /root/.ssh/known_hosts il file va bene.
– Se testuser vuole inviare un ssh al server, rimuovere la voce nel file /home/testuser/.ssh/known_hosts .
3. Nel mio caso, rimuoverò la chiave (evidenziata in rosso) per il server di destinazione 192.168.219.149 dal file /home/user01/.ssh/known_hosts.
# vim /home/user01/.ssh/known_hosts 172.104.9.113 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLrY91bQOihgFZQ2Ay9KiBG0rg51/YxJAK7dvAIopRaWzFEEis3fQJiYZNLzLgQtlz6pIe2tj9m/Za33W6WirN8= 192.168.219.148 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCrY/m16MdFt/Ym51Cc7kxZW3R2pcHV1jlOclv6sXix1UhMuPdtoboj+b7+NLlTcjfrUccL+1bkg8EblYucymeU= 192.168.219.149 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCrY/m16MdFt/Ym51Cc7kxZW3R2pcHV1jlOclv6sXix1UhMuPdtoboj+b7+NLlTcjfrUccL+1bkg8EblYucymeU=
Metodo 2:rimozione della vecchia chiave utilizzando il comando ssh-keygen
Puoi anche rimuovere la vecchia chiave usando anche il comando ssh-keygen. La sintassi per utilizzare il comando è la seguente.
$ ssh-keygen -R [hostname|IP address]
Ad esempio, nel nostro caso utilizzeremo l'indirizzo IP per eliminare la vecchia chiave.
$ ssh-keygen -R 192.168.219.149 # Host 192.168.219.149 found: line 3 /home/user01/.ssh/known_hosts updated. Original contents retained as /home/user01/.ssh/known_hosts.oldNota :Se non si conosce esattamente il motivo per cui il server SSH presenta una chiave diversa, il file unknown_hosts non è corretto o qualcuno deve esaminare questo server e le connessioni di rete per comprendere il motivo della modifica imprevista.
Verifica
Se i server remoti chiedono una conferma per aggiungere la nuova chiave al file ~/.ssh/known_host, conferma che hai rimosso con successo la vecchia chiave. Se confermi la richiesta, la macchina di origine aggiunge la nuova chiave al file ~/.ssh/known_host.
$ ssh [email protected] The authenticity of host '192.168.219.149 (192.168.219.149)' can't be established. ECDSA key fingerprint is SHA256:V+iGp3gwSlnpbtYv4Niq6tcMMSZivSnYWQIaJnUvHb4. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.219.149' (ECDSA) to the list of known hosts.