Controllare l'impronta digitale per la chiave ECDSA inviata dall'host remoto [chiuso]


24

Ho ricevuto il noto messaggio di avviso quando provo ad accedere a un server SSH:

$ ssh whateverhost
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    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 ECDSA key sent by the remote host is
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxx.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/user/.ssh/known_hosts:10
ECDSA host key for ipofmyhost has changed and you have requested strict checking.
Host key verification failed.

E so perché perché ho cambiato l'ip di tale server. Se così non fosse, come potrei controllare l'impronta digitale per la chiave ECDSA inviata dall'host remoto?

Ho provato a farlo tramite:

echo -n ipofthehost | sha256sum

Ma non ho la stessa impronta digitale. Ho anche provato "hostname, ip" in un modo simile a aws ma non ho trovato corrispondenza.

Se cancello l'ingresso dal mio file known_hosts e provo di nuovo a ssh, ci riesce e dice quanto segue:

ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxx/xxxxxxxxx/xxxxxxx.
Are you sure you want to continue connecting (yes/no)? 

Quindi, a cosa serve l'applicazione sha256sum per ottenere l'impronta digitale e come posso controllarla?


2
Senza un buon valore noto non è possibile verificarlo. Lo annoti solo la prima volta che avvii SSHd e le chiavi vengono generate, e controlla quel valore noto.

Ho modificato la tua domanda. Questo sito accetta solo domande su un ambiente aziendale professionale. Le domande sulla rete domestica sono fuori tema qui, ho provato a salvare la tua domanda con la mia modifica. Attualmente c'è un voto contrario alla tua domanda per chiuderlo su questo terreno.
Peter dice di reintegrare Monica

@ user186340 Sembra vero che "lo scrivi solo la prima volta che avvii SSHd". Se hai accesso alla macchina che esegue SSHd puoi fare /etc/ssh/ssh_host_ecdsa_key.pubper ottenere l'impronta digitale. L'ho appena fatto.
Jamadagni,

Risposte:


12

Un'impronta digitale della chiave pubblica non è il semplice hash di una stringa IP.

Per recuperare una chiave pubblica dell'host remoto che è possibile utilizzare, è ssh-keyscan <IP>possibile utilizzare gli strumenti abituali per estrarne l'impronta digitale ( ssh-keygen -lf <public_key_file>).

Infine puoi confrontare con l'impronta digitale corrente nel tuo known_hostsfile con ssh-keygen -l -F <domain_or_ip>.


2
Sono confuso perché quando mi connetto tramite SSH e forzo per la prima volta una chiave ecdsa ( ssh -oHostKeyAlgorithms='ecdsa-sha2-nistp256' william@my.server) mi dà un'impronta alfanumerica di 43 cifre ( ECDSA key fingerprint is SHA256:sBKcTiQ5V.... etc.) ma quando corro ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pubottengo 32 caratteri esadecimali ??
William Turrell,

1
@WilliamTurrell Ciò accade perché il tuo server deve avere una versione precedente (probabilmente pre-openSSH 6.8) di ssh-keygen(o il tuo provider di server non ha tenuto il passo con i tempi e fornisce comunque solo hash md5 invece del nuovo SHA256). Ci sono soluzioni alternative elencate qui: superuser.com/questions/929566
SeldomNeedy

9

Un po 'più in dettaglio : poiché il messaggio di avviso si riferisce all'impronta digitale per la chiave ECDSA inviata dall'host remoto, raccogliamo le informazioni sulla chiave pubblica (ecdsa) dell'host:

ssh-keyscan -t ecdsa ip_or_hostmane > ecdsa_file_to_compare

Quindi possiamo scoprire dove nel nostro file known_hosts quella chiave pubblica (ecdsa) è:

ssh-keygen -l -F ipofhost

Se vogliamo confrontare le impronte digitali dobbiamo mettere i contenuti del nostro file known_hosts (solo la voce relativa a questo host), possiamo chiamarlo ecdsa_file_from_known_hosts e quindi confrontarli come segue:

ssh-keygen -lf ecdsa_file_to_compare
ssh-keygen -lf ecdsa_file_from_known_hosts

E controlla se lo spettacolo ha lo stesso hash.

Naturalmente non corrispondono, ecco perché ho ricevuto il messaggio di avviso (ssh controlla questa corrispondenza internamente). Se siamo sicuri della modifica dell'ip (quindi non stiamo subendo un attacco man-in-the-middle) possiamo semplicemente cancellare la voce di quell'host nel nostro file known_hosts e la prossima volta che vi inseriremo una nuova voce per verrà aggiunto a tale file.

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.