Una connessione internet sicura non è solo ideale – è essenziale. Infatti, arriviamo a dire che è la priorità numero uno per un sito web. L’errore “Warning: Remote Host Identification Has Changed” (l’identificazione dell’host remoto è cambiata) protegge la vostra connessione da alcuni attacchi maligni, anche se in alcuni casi, potete causare inavvertitamente l’errore.

L’errore è legato alle chiavi Secure Shell (SSH) e all'”impronta digitale” del server cercato dal client. Se Secure Shell pensa che ci sia un problema, bloccherà l’accesso al vostro server e darà un errore. Ma potete risolvere il problema in pochi passaggi.

Nei prossimi minuti vi mostreremo come risolvere l’errore “Warning: Remote Host Identification Has Changed” sia per Windows che per Mac. Prima, però, vogliamo darvi qualche dettaglio in più sul messaggio di errore.

Cosa Significa “Warning: Remote Host Identification Has Changed”

Uno dei modi più sicuri per connettersi ad un server web è quello di utilizzare SSH. È uno strumento a riga di comando che permette di accedere ad una rete non sicura in modo sicuro. Consideratelo come un tipo di configurazione “super-SFTP”, anche se in pratica non è un confronto 1:1.

Potete accedere al vostro sito quasi ovunque si possa usare internet, a patto che abbiate le giuste credenziali di accesso. Inoltre, la maggior parte delle macchine macOS e Linux ha un client SSH integrato nel sistema operativo (OS). Per Windows, userete un’interfaccia dedicata (e ne parleremo più avanti in dettaglio).

Per quanto riguarda l’errore “Warning: Remote Host Identification Has Changed”, questo si riferisce ai controlli di sicurezza che il vostro client farà. Una connessione SSH utilizza come sistema di autenticazione delle “chiavi” dedicate – piccoli file memorizzati sul vostro computer. È un po’ come un handshake Secure Sockets Layers (SSL) e infatti ci sono alcune somiglianze di alto livello tra SSH e SSL.

Le chiavi forniscono un’impronta digitale permanente del server host. Questo farà sì che la connessione sia accurata e che non siate soggetti ad un attacco “machine-in-the-middle”.

Se il client pensa che queste impronte digitali siano diverse da quelle che lui interpreta come corrette, otterrete l’errore “Warning: Remote Host Identification Has Changed” al momento del login:

[user@hostname ~]$ ssh root@user

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@ 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 RSA key sent by the remote host is

xx:xx:xx.

Please contact your system administrator.

Add correct host key in /home/hostname /.ssh/known_hosts to get rid of this message.

Offending RSA key in /var/lib/sss/pubconf/known_hosts:4

RSA host key for user has changed and you have requested strict checking.

Host key verification failed.

Per quanto riguarda gli errori, questo è dettagliato e chiaro – vi dice cosa è successo, vi dà una possibile ragione del perché e come potreste risolverlo.

Ma c’è un aspetto su cui possiamo soffermarci ancora un attimo prima di mostrarvi come risolvere l’errore “Warning: Remote Host Identification Has Changed”.

Come il File known_hosts Contribuisce all’Autenticazione SSH

Noterete che il messaggio di errore fa riferimento ad un file known_hosts. Il nome dovrebbe darvi un indizio su cosa contiene, ma, per chiarezza, è una lista di host remoti SSH conosciuti dal computer. È usato come file client di riferimento per la procedura di autenticazione.

Quando vi connettete per la prima volta ad un server, spesso riceverete una richiesta di conferma tramite la vostra interfaccia, che vi chiede se volete connettervi. Se è così, questa impronta diventerà parte del vostro file known_hosts.

Naturalmente, se l’impronta digitale differisce da quella presente nel file known_hosts, questo potrebbe indicare che un utente malintenzionato vi sta prendendo di mira. In altri casi, potreste già sapere perché c’è una differenza, anche se è utile essere vigili a prescindere.

Come Risolvere l’Errore “Warning: Remote Host Identification Has Changed” (su Windows e Mac)

Potete risolvere l’errore “Warning: Remote Host Identification Has Changed” sia su Windows che su macOS. Tuttavia, è più semplice farlo su Mac.

Analizziamo diverse soluzioni per rimettere a posto le cose, iniziando da Windows.

1. Windows

Le macchine Windows potrebbero non avere un file known_hosts. Tuttavia, se usate il client OpenSSH, c’è un file. Per trovarlo, aprite la barra di ricerca di Windows e cercate la vostra cartella utente con il comando %USERPROFILE%.

Questo aprirà la cartella in Esplora file. Al suo interno, ci sarà anche una cartella .ssh:

Esplora File di Windows.
Esplora File di Windows.

In questa cartella, il file che vogliamo è known_hosts. Potete aprirlo con Notepad (o il vostro editor di testo preferito). All’interno ci sarà un elenco di chiavi:

Il file known_hosts di Windows.
Il file known_hosts di Windows.

Qui potete eliminare la chiave che sta causando il problema, poi salvate nuovamente il file.

Alcuni utenti potrebbero preferire il client PuTTY. Le chiavi si trovano nel Registro di sistema, anche se hanno lo stesso scopo di OpenSSH.

Dovrete aprire l’editor del registro di Windows (altrimenti noto come “regedit”). Potete farlo in qualsiasi modo vi sia comodo, ma il modo più veloce è quello di digitare il nome dell’applicazione nella barra di ricerca di Window:

Il collegamento all'Editor del registro di sistema nel menu Start di Windows.
Il collegamento all’Editor del registro di sistema nel menu Start di Windows.

All’interno di regedit, cercate la seguente destinazione:

HKEY_CURRENT_USER/Software/SimonTatham/PuTTY/SshHostKeys/

Vedrete un elenco di voci relative alle connessioni salvate sul vostro computer. Il vostro compito è quello di eliminare quella che sta causando un problema:

Eliminazione di una chiave di registro in regedit.
Eliminazione di una chiave di registro in regedit.

Una volta che avete cliccato sul pulsante Elimina, dovrete anche confermare che volete rimuovere la chiave:

La finestra di dialogo Conferma eliminazione valore.
La finestra di dialogo Conferma Eliminazione Valore.

Fare clic su significa che la chiave sarà eliminata per sempre e non dovreste più ricevere l’errore “Warning: Remote Host Identification Has Changed”.

2. Mac

Su Mac ci sono diversi modi per risolvere l’errore “Warning: Remote Host Identification Has Changed” – sia attraverso un’applicazione premium come SSH Config Editor che tramite Terminale. I risultati saranno gli stessi, quindi vi consigliamo di scegliere la soluzione più comoda (e conveniente).

Il nostro approccio preferito è quello di accedere al file all’interno di una finestra del Terminale (o iTerm2 se lo usate), e aprirlo anche con un editor dedicato Nano o Vim. Questo perché è accessibile a tutti e semplice da usare, indipendentemente dal vostro livello di esperienza.

Qui useremo Nano. Per prima cosa, aprite il vostro Terminale:

Apertura del Terminale da Spotlight.
Apertura del Terminale da Spotlight.

Da qui, eseguite il comando nano ~/.ssh/known_hosts nella vostra finestra. Questo aprirà una nuova istanza di Nano e mostrerà le chiavi all’interno del vostro file known_hosts:

L'editor Nano con il file known_hosts.
L’editor Nano con il file known_hosts.

Dovreste eliminare la chiave che causa l’errore “Warning: Remote Host Identification Has Changed” e poi salvare le modifiche.

Potreste anche voler eliminare l’intero file known_hosts, specialmente se usate SSH solo per uno o due siti. Per farlo, potete eseguire rm .ssh/known_hosts in una finestra del terminale.

C’è un altro metodo per alterare il file known_hosts su Mac: usare l’utilità ssh-keygen dalla riga di comando. Questo è ottimo se non volete scavare nel file stesso, o se volete lavorare solo con un sito o una chiave.

Per farlo, aprite una finestra del Terminale ed eseguite ssh-keygen, seguito dal vostro hostname del server. Per esempio:

ssh-keygen -R server.example.com

Questo non vi chiederà se vuoi eliminare le linee specificate, quindi assicuratevi di rimuovere quelle giuste prima di procedere:

Cancellare dal file known_hosts con ssh-keygen.
Cancellare dal file known_hosts con ssh-keygen.

Una volta fatto questo, non dovreste più ricevere l’errore “Warning: Remote Host Identification Has Changed”.

Riepilogo

La sicurezza del web non riguarda solo l’installazione di plugin e la creazione di una password forte. Le connessioni che usate per accedere ai server hanno bisogno della vostra massima attenzione. Se non volete essere soggetti ad un attacco machine-in-the-middle, dovrete utilizzare l’accesso SSH quando vi connettete.

Tuttavia, il sistema funziona quasi troppo bene. Potreste ricevere l’errore “Warning: Remote Host Identification Has Changed” per diverse ragioni e alcune sono innocenti.

Indipendentemente da questo, potete risolvere l’errore in pochissimo tempo attraverso un Prompt dei comandi o un terminale, usando solo pochi comandi.