Domanda Problema di connessione SSH con errore "Verifica chiave host non riuscita ..."


Posso collegarmi a un'altra macchina Ubuntu nella mia LAN tramite SSH. Su entrambi i PC che ho installato openssh-server  ma da un altro computer Ubuntu non riesco a collegarmi al mio PC tramite SSH e ho ricevuto questo errore:

Verifica chiave host fallita ...


139
2018-05-28 11:36


origine


Dó usi nomi host o indirizzi IP? - Thorbjørn Ravn Andersen
Non simile ma ho avuto lo stesso errore ma a causa di un problema diverso: serverfault.com/questions/494916/... - zengr
Questo non è un problema specifico di Ubuntu. Può succedere con qualsiasi ssh dalla riga di comando. - MarkHu


risposte:


"Verifica chiave host non riuscita" significa che il ospite la chiave dell'host remoto è stata modificata.

SSH memorizza le chiavi host degli host remoti in ~/.ssh/known_hosts. È possibile modificare manualmente il file di testo e rimuovere la vecchia chiave (è possibile visualizzare il numero di riga nel messaggio di errore) o utilizzare

ssh-keygen -R hostname

(che ho imparato dalla risposta a È possibile rimuovere una particolare chiave host dal file known_hosts di SSH?).


164
2018-05-28 13:19



Può anche significare che semplicemente non hai la chiave host dell'host remoto. Ad esempio, se io rm ~/.ssh/*, poi ssh -o BatchMode=yes root@somewhere, se nient'altro è sbagliato, otterrò Host key verification failed.  Non importante se sei sempre interattivo, ma rilevante per gli script che incontrano lo stesso errore. - Ron Burk
Non sorprende, ssh-keygen -R example.net:7999 i rendimenti Host example.net:7999 not found in known_hosts. - alex
Ho rimosso known_hosts file e ssh di nuovo. Ha funzionato. - ParisaN


Se si esegue in determinate situazioni remote / scripting in cui manca l'accesso interattivo al prompt-add-hostkey, aggirare il problema in questo modo:

$ ssh -o StrictHostKeyChecking=no user@something.example.com uptime

Avviso: aggiunto permanentemente "something.example.com, 10.11.12.13" (RSA) all'elenco degli host noti.


104
2017-07-24 00:47



+1, questa è una brutta soluzione, ma in alcuni casi di processi di monitoraggio automatizzati che funzionano con i dispositivi connessi ip-dymaic, questa è una soluzione semplice e accettabile. - Ninsuo
+1 Ad esempio, per le esecuzioni di Jenkins, questa è una buona soluzione. Grazie - Lobo
@Lobo non può essere più d'accordo, lo sto usando per Jenkins, che è bello sh """ssh -o StrictHostKeyChecking=No ec2-user@someIpAddress-e2e sudo service tomcat restart""" - prayagupd
Salvato la mia vita. Soluzione salvavita - user1735921


Inoltre a volte c'è una situazione in cui si sta lavorando sulla console seriale, quindi si controlla il comando precedente in modalità dettagliata -v ti mostrerò /dev/tty non esiste, mentre lo fa.

ssh -v user@hostname

Nel caso di cui sopra basta rimuovere /dev/tty e creare un collegamento simbolico di /dev/ttyS0 a /dev/tty.

rm /dev/tty
ln -s /dev/ttyS0 /dev/tty

In alternativa, aggiungere id_rsa.pub alla posizione remota, quindi la password non viene richiesta e si ottiene l'accesso di accesso.


10
2018-05-27 13:01



+1 per la consulenza all'uso del parametro -v; questo può essere di grande aiuto durante il debug di problemi ssh. - daniel kullmann


Nel mio caso, questo è stato causato da un problema udev - non c'era /dev/tty nodo del dispositivo. La soluzione per me era solo:

sudo mknod -m 666 /dev/tty c 5 0

8
2017-07-25 20:28





Beh, semplicemente perché la seconda ubuntu richiede la connessione tramite chiave e non la password.

Ti suggerisco di usare sudo dpkg-reconfigure openssh-server sul tuo pc, e quindi dovrebbe funzionare correttamente. Reimposta la configurazione per openssh e dovrebbe tornare a un'autenticazione password predefinita.

La seconda possibilità è che ci sia già una chiave per la tua altra ubuntu nel tuo PC, e che sia cambiata in modo da non essere più riconosciuta. In questo caso, dovrai modificare il file .ssh/authorized_keys rimuovere la riga problematica che identifica la tua ubuntu.


3
2018-05-28 11:39





Questo è un thread vecchio e ho appena trovato questa risposta, aggiungerò solo ciò che ho fatto per risolvere questo problema.

ssh-keygen -f "/home/USER/.ssh/known_hosts" -R HOSTNAME

Ho appena visto il messaggio di errore che mi ha lanciato e ha detto di eseguire quel comando per rimuoverlo dalla lista degli host. Successivamente ho fatto quanto segue:

ssh-copy-id HOSTNAME

Di quanto ho seguito le istruzioni da lì fino a quando non sono stato in grado di ssh nel server.


3
2018-04-15 16:09



Come questo comando sto ottenendo come suggerimento in Ubuntu 12.4. - MaNKuR


Sul terminale:

ssh -o StrictHostKeyChecking=No -i YourPublicKey.pem user@example.com uptime

Apparirà il seguente messaggio, o simile,

Warning: Permanently added 'example.com, XX.XXX.XXX.XX' (ECDSA) to the list of known hosts.
 00:47:37 up 3 min,  0 users,  load average: 0.00, 0.00, 0.00

Quindi, connettersi all'EC2 come normale:

ssh -i YourPublickey.pem user@example.com

3
2018-03-27 00:50



ho ottenuto command-line line 0: Bad yes/no/ask argument. perché si usa erroneamente "No" invece di "no" come argomento StrictHostKeyChecking - Axel Bregnsbo


Significa che la chiave dell'host remoto è stata modificata (potrebbe essere la modifica della password dell'host),

Il tuo terminale ha suggerito di eseguire questo comando come utente root

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231

Devi rimuovere quel nome host dall'elenco degli host sul tuo pc / server. Copia il comando suggerito ed esegui come utente root.

$ sudo su                                                            // Login as a root user

$ ssh-keygen -f "/root/.ssh/known_hosts" -R [www.website.net]:4231   // Terminal suggested command execute here
Host [www.website.net]:4231 found: line 16 type ECDSA
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

$ exit                                                               // Exist from root user

$ sudo ssh root@www.website.net -p 4231                              // Try again

Spero che funzioni.


2
2017-08-14 04:59





Dovresti cambiare la tua chiave in questo modo: Dal tuo errore specificato trova per quale chiave host è cambiato esempio: tasto ECDSA offendente in /Users/user-name/.ssh/known_hosts:5 ha detto che la quinta chiave è cambiata, quindi fai questo:

sed -i '5d' ~/.ssh/known_hosts

Avviso: devi essere root o avere il privilegio per sudo.


1
2018-03-13 15:22



No, a meno che tu non lo stia facendo per qualcun altro, non richiede root né sudo. Stai modificando il file nella tua home directory. Secondo: per il comando per funzionare richiede GNU sed. - techraf
Forse hai ragione ma ho provato a ssh da Mac OSX a ubuntu-server e devo farlo. a proposito, grazie per il tuo commento. - Amir.A.G