Come risolvere il messaggio "Avviso: l'identificazione dell'host remoto è cambiata!"

Pubblicato: 2024-10-16
Sommario
  • Comprendere l'Avvertimento
  • Verifica l'identità del server
  • Soluzione 1: rimuovere manualmente la vecchia chiave host (Windows, Mac, Ubuntu)
  • Soluzione 2: cancella l'intero fileknown_hosts (Windows, Mac, Ubuntu)
  • Soluzione 3: ignorare temporaneamente il controllo della chiave host (Windows, Mac, Ubuntu)
  • Soluzione 4: aggiungere manualmente la nuova chiave host (Windows, Mac, Ubuntu)
  • Soluzione 5: verifica le modifiche al DNS o all'indirizzo IP (Windows, Mac, Ubuntu)
  • Migliori pratiche per evitare questo problema in futuro (Windows, Mac, Ubuntu)
  • Conclusione

Quando tenti di connetterti a un server remoto utilizzando SSH, potresti ricevere il messaggio di errore: "Avviso: l'identificazione dell'host remoto è cambiata!" . Questo messaggio è una funzionalità di sicurezza utilizzata da SSH per proteggerti dagli attacchi man-in-the-middle, in cui una terza parte potrebbe intercettare la tua comunicazione con il server.

In termini semplici, questo avviso ti dice che l'impronta digitale del server (un identificatore univoco memorizzato sul tuo computer locale) non corrisponde a ciò che SSH ha registrato in precedenza. Potrebbe trattarsi di una modifica legittima, come la reinstallazione del server o la modifica del suo indirizzo IP, ma potrebbe anche segnalare una potenziale minaccia alla sicurezza. SSH blocca la connessione per proteggere il tuo sistema finché non verifichi l'autenticità del server.

In questo articolo spiegheremo come risolvere in modo sicuro questo problema sui sistemi Mac , Ubuntu (Linux) e Windows , assicurandoti di poter continuare a connetterti in modo sicuro senza ignorare potenziali rischi.

Potresti essere interessato a leggere: Come risolvere l'errore di autorizzazione negata (Publickey)

Comprendere l'Avvertimento

Perché viene visualizzato l'avviso?

SSH memorizza un'impronta digitale della chiave del server remoto in un file known_hosts sul tuo computer locale. Questa impronta digitale viene utilizzata per verificare che ti stai connettendo allo stesso server ogni volta che usi SSH. Se l'impronta digitale del server cambia, SSH ti mostrerà un avviso perché non può essere certo se l'identità del server è cambiata legittimamente o se qualcuno sta tentando di intercettare la tua connessione.

Scenari comuni per l'avviso:

  • Reinstallazione o aggiornamento del server: se il server è stato reinstallato, ripristinato o aggiornato, potrebbe generare una nuova chiave SSH, che non corrisponderà a quella archiviata nel file known_hosts .
  • Modifica dell'indirizzo IP: se l'indirizzo IP del server è cambiato (ad esempio, a causa del passaggio a un nuovo provider di hosting o rete), SSH potrebbe contrassegnarlo come un cambiamento sospetto.
  • Modifiche DNS: se sono presenti aggiornamenti o configurazioni errate nei record DNS del server, SSH potrebbe interpretarli come un server diverso.
  • Modifiche alla configurazione del server: a volte, gli amministratori del server modificano la configurazione della chiave SSH, risultando in una nuova chiave che non corrisponde a quella precedente.
  • Potenziale minaccia alla sicurezza (attacco Man-in-the-Middle): l'avviso potrebbe essere un segnale di qualcuno che tenta di intercettare la connessione al server. Se non sei sicuro delle modifiche, è essenziale verificare l'identità del server prima di procedere.

Il ruolo del known_hosts :

Il known_hosts è il luogo in cui SSH memorizza le informazioni sugli host remoti a cui ti sei connesso in precedenza. Il file si trova in genere nella directory ~/.ssh/ su Mac e Ubuntu e, per gli utenti PuTTY su Windows, memorizza le chiavi host nel registro di Windows.

Verifica l'identità del server

Prima di apportare qualsiasi modifica per risolvere il problema "L' identificazione dell'host remoto è cambiata!" ” attenzione, è fondamentale verificare se l'identità del server è cambiata legittimamente. Questo passaggio garantisce di non cadere vittima di un attacco man-in-the-middle.

Perché dovresti verificare prima l'identità del server

Ignorare questo passaggio potrebbe causare la connessione a un server compromesso o dannoso, mettendo a rischio i tuoi dati o le tue credenziali. Tratta sempre seriamente questo avviso, soprattutto se non sei sicuro delle recenti modifiche apportate al server.

Passaggi per verificare l'identità del server:

  • Contatta l'amministratore del server: se non sei tu a gestire il server, contatta l'amministratore o il provider di hosting e chiedi se sono state apportate modifiche recenti, come una modifica dell'indirizzo IP, una reinstallazione del server o una rigenerazione della chiave.
  • Confronta l'impronta digitale della chiave host: utilizzare il comando seguente per verificare manualmente la chiave host del server:
     ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

    L'output mostrerà l'impronta digitale della chiave host, che puoi confrontare con quella nel file known_hosts o richiedere all'amministratore del server.

Soluzione 1: rimuovere manualmente la vecchia chiave host (Windows, Mac, Ubuntu)

Per Mac e Ubuntu (Linux):

  1. Apri il terminale.
  2. Apri il file ~/.ssh/known_hosts utilizzando un editor di testo:
     nano ~/.ssh/known_hosts
  3. Cerca la riga che corrisponde al nome host o all'indirizzo IP del server remoto.
  4. Elimina la riga che contiene la vecchia chiave host.
  5. Salvare il file e chiudere l'editor di testo.
  6. Riconnettiti al server utilizzando SSH:
     ssh <username>@<hostname>

Rimozione automatica (Mac e Ubuntu):

Invece di modificare manualmente il known_hosts , puoi utilizzare il comando seguente per rimuovere automaticamente la vecchia chiave host:

 ssh-keygen -R <hostname or IP>

Per Windows (usando PuTTY):

  1. Apri PuTTY .
  2. Premi Windows + R , digita regedit e premi Invio.
  3. Passare al percorso del registro:
     HKEY_CURRENT_USER\Software\Myusername\PuTTY\SshHostKeys
  4. Individua la voce associata al nome host o all'indirizzo IP del server remoto.
  5. Fare clic con il tasto destro sulla voce e selezionare Elimina .
  6. Riconnettiti al server in PuTTY e ti verrà chiesto di accettare la nuova chiave.

Per Windows (usando Git Bash):

  1. Apri Git Bash .
  2. Esegui il seguente comando:
     ssh-keygen -R <hostname>
  3. SSH ti chiederà di accettare la nuova chiave la prossima volta che ti connetterai.

Soluzione 2: cancella l'intero known_hosts (Windows, Mac, Ubuntu)

Per Mac e Ubuntu (Linux):

  1. Apri il terminale.
  2. Esegui il comando seguente per rimuovere l'intero known_hosts :
     rm ~/.ssh/known_hosts
  3. Riconnettiti al server remoto utilizzando SSH:
     ssh <username>@<hostname>

Per Windows (usando PuTTY):

  1. Apri PuTTY .
  2. Premi Windows + R , digita regedit e premi Invio per aprire l' editor del Registro di sistema .
  3. Vai a:
     HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
  4. Fare clic con il tasto destro sulla cartella SshHostKeys e scegliere Elimina . Ciò rimuoverà tutte le chiavi host memorizzate.
  5. Riconnettiti al server utilizzando PuTTY e ti verrà richiesto di accettare la nuova chiave host.

Per Windows (usando Git Bash):

  1. Apri Git Bash .
  2. Rimuovi il known_hosts eseguendo:
     rm ~/.ssh/known_hosts
  3. Quando ti riconnetti al server utilizzando SSH, ti verrà richiesto di accettare la nuova chiave host.

Soluzione 3: ignorare temporaneamente il controllo della chiave host (Windows, Mac, Ubuntu)

Se devi connetterti rapidamente al server e non hai il tempo di rimuovere manualmente le vecchie chiavi host, puoi ignorare temporaneamente la verifica della chiave host. Sebbene questo metodo funzioni in caso di necessità, non è consigliato per un uso regolare in quanto può esporre a potenziali rischi per la sicurezza.

Per Mac e Ubuntu (Linux):

 ssh -o StrictHostKeyChecking=no <username>@<hostname>

Per Windows (usando Git Bash):

 ssh -o StrictHostKeyChecking=no <username>@<hostname>

Per Windows (usando PuTTY):

  1. Apri PuTTY .
  2. Passare a Connessione > SSH > Chiavi host .
  3. Disabilitare il controllo della chiave host selezionando Accetta sempre .
  4. Riconnettersi al server senza verificare la chiave host.

Soluzione 4: aggiungere manualmente la nuova chiave host (Windows, Mac, Ubuntu)

Per Mac e Ubuntu (Linux):

 ssh-keyscan -H <hostname> >> ~/.ssh/known_hosts

Per Windows (usando Git Bash):

 ssh-keyscan -H <hostname> >> ~/.ssh/known_hosts

Per Windows (usando PuTTY):

Sfortunatamente, PuTTY non ha un equivalente diretto per ssh-keyscan . Per aggiungere manualmente la chiave host, dovrai connetterti al server e consentire a PuTTY di richiederti la nuova chiave host.

Soluzione 5: verifica le modifiche al DNS o all'indirizzo IP (Windows, Mac, Ubuntu)

Per Mac e Ubuntu (Linux):

 nslookup <hostname>
 dig <hostname>

Per Windows (usando Git Bash):

 nslookup <hostname>
 dig <hostname>

Per Windows (usando PuTTY):

  1. Apri il prompt dei comandi o PowerShell .
  2. Utilizzare il comando seguente per verificare il DNS o l'indirizzo IP:
     nslookup <hostname>
  3. Confronta l'indirizzo IP nell'output con quello che PuTTY mostra nel registro.
  4. Se l'indirizzo IP è cambiato, elimina la vecchia chiave host dal registro di PuTTY accedendo a:
     HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
  5. Riconnettiti tramite PuTTY e ti verrà chiesto di accettare la nuova chiave.

Migliori pratiche per evitare questo problema in futuro (Windows, Mac, Ubuntu)

  • Utilizza indirizzi IP statici: configura i tuoi server con indirizzi IP statici per evitare modifiche impreviste che possono attivare l'avviso.
  • Pulisci o aggiorna known_hosts : rivedi e pulisci periodicamente le chiavi host vecchie o obsolete.
  • Prendi in considerazione l'utilizzo di certificati SSH: utilizza i certificati SSH per una gestione scalabile delle chiavi host, riducendo le possibilità di questo avviso.
  • Monitora le modifiche DNS o IP: tieni d'occhio le modifiche ai record DNS o agli indirizzi IP e aggiorna known_hosts di conseguenza.

Conclusione

La schermata "L'identificazione dell'host remoto è cambiata!" l'avviso è una funzionalità di sicurezza essenziale in SSH che impedisce l'accesso non autorizzato verificando l'identità dei server remoti. Sebbene possa essere allarmante, è importante adottare le misure necessarie per verificare l'identità del server prima di procedere con qualsiasi modifica.

Utilizzando le soluzioni descritte in questo articolo, puoi risolvere l'avviso in tutta sicurezza sia che utilizzi Windows , Mac o Ubuntu . Ricorda sempre di verificare prima l'autenticità del server, quindi di scegliere la soluzione più adatta alla tua situazione, che si tratti di rimuovere la vecchia chiave host, cancellare il known_hosts o ignorare temporaneamente il controllo.

Inoltre, seguire le migliori pratiche come l'utilizzo di indirizzi IP statici, l'aggiornamento regolare known_hosts e la considerazione dei certificati SSH può aiutare a ridurre al minimo il verificarsi di questo problema in futuro.