Come rimuovere il controllo rigoroso della chiave RSA in SSH e qual è il problema qui?


42

Ho un server Linux che ogni volta che mi connetto mi mostra il messaggio che ha cambiato la chiave host SSH:

$ ssh root @ host1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@ @ ATTENZIONE: L'IDENTIFICAZIONE DELL'HOST REMOTO È CAMBIATA! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@ È POSSIBILE CHE QUALCUNO STA FACENDO QUALCOSA NASTY! Qualcuno potrebbe averti intercettato in questo momento (attacco man-in-the-middle)! È anche possibile che la chiave host RSA sia stata appena modificata. L'impronta digitale per la chiave RSA inviata dall'host remoto è 93: a2: 1b: 1c: 5f: 3e: 68: 47: bf: 79: 56: 52: f0: ec: 03: 6b. Si prega di contattare l'amministratore di sistema. Aggiungi la chiave host corretta in /home/emerson/.ssh/known_hosts per eliminare questo messaggio. Chiave offensiva in /home/emerson/.ssh/known_hosts:377

La chiave host RSA per host1 è stata modificata e hai richiesto un controllo rigoroso. Verifica chiave host non riuscita.

Mi tiene per pochi secondi connesso e quindi chiude la connessione.

host1: ~ / .ssh # Leggi dall'host remoto host1: connessione ripristinata dal peer Connessione all'host1 chiusa.

Qualcuno sa cosa sta succedendo e cosa potrei fare per risolvere questo problema?


1
Questo duplica la domanda precedente: serverfault.com/questions/2988/…
Drew Stephens

Risposte:


68

Si prega di non eliminare l'intero file known_hosts come raccomandato da alcune persone, questo annulla completamente il punto dell'avvertimento. È una funzione di sicurezza che ti avverte che potrebbe essersi verificato un uomo nel mezzo dell'attacco.

Ti suggerisco di identificare il motivo per cui pensa che qualcosa sia cambiato, molto probabilmente un aggiornamento SSH ha modificato le chiavi di crittografia a causa di una possibile falla di sicurezza. È quindi possibile eliminare quella riga specifica dal file known_hosts:

sed -i 377d ~/.ssh/known_hosts

Questo d eletes linea 377, come mostrato dopo i due punti nel l'avvertimento:

/home/emerson/.ssh/known_hosts:377

In alternativa è possibile rimuovere la chiave pertinente procedendo come segue

ssh-keygen -R 127.0.0.1 (obviously replace with the server's IP)

Si prega di NON eliminare l'intero file e assicurarsi che questo sia effettivamente il computer a cui si desidera connettersi prima di eliminare la chiave specifica.


Non eliminerà oltre 350 server a causa di una mancata corrispondenza della chiave. Qualche idea sul perché continui a chiudere la connessione?
setatakahashi,

Non viene risolto dopo aver rimosso il record known_hosts pertinente? In caso contrario, potresti eseguire il client ssh in modalità dettagliata e incollarlo da qualche parte.
Adam Gibbins,

1
Sta chiudendo la macchina perché la chiave host non è valida, proprio come dice. Se si prende sul serio la sicurezza, è necessario verificare con l'amministratore del server per assicurarsi che la chiave host sia cambiata per un motivo legittimo. In tal caso, puoi sostituirlo, come spiegato da Adam.
Matthew Flaschen,

Ho seguito il tuo suggerimento ma $ sed -i "46 d" ~ / .ssh / known_hosts sed: 1: "/Users/myusr/.ssh ...": caratteri extra alla fine del comando l quindi l'ho rimosso manualmente con vim e ha funzionato. Grazie!
Luis Ramirez-Monterosa,

3
La sintassi di Adam è quasi corretta, ma è necessario uno spazio tra "377" e "d". Inoltre, in OS X, gli host noti si trovano in ~ / .ssh / known_hosts; notare la mancanza di un "." nel nome del file.
ktappe,

27

Penso che sebbene alcune delle risposte qui affrontino la linea d'azione raccomandata nella domanda del PO, non risponde pienamente alla domanda.

La domanda afferma "Come rimuovere il controllo rigoroso della chiave RSA in SSH e qual è il problema qui?"

Il problema qui è, come consigliato da altri, una modifica nell'host probabilmente dovuta alla reinstallazione del server (scenario più comune). E la soluzione raccomandata è infatti quella di rimuovere la chiave offensiva dal file .ssh / authorized_keys con un sed inline.

Tuttavia non ho visto alcuna risposta indirizzare la parte specifica della domanda " Come rimuovere il controllo rigoroso della chiave RSA in SSH ".

Puoi rimuovere StrictHostKey controllando il tuo file di configurazione ssh, generalmente archiviato in ~/.ssh/config.

Di seguito viene fornito un esempio di blocco host:

Host 101
  HostName yourip|hostname
  User youruserid
  IdentityFile /path/to/keyfile
  Port 22
  StrictHostKeyChecking no

La riga specificamente aggiunta è l'ultima StrictHostKeyChecking noche fa proprio quello. A seconda del tuo scenario specifico, ciò può esserti utile, ad esempio l'esecuzione di più contenitori virtualizzati su un server dedicato, su pochi ips, l'arresto e l'avvio di un'altra istanza sullo stesso IP.


3
+1 Perché questo post in realtà affronta la parte di controllo rigoroso del messaggio di errore.
Shibumi,

1
+1 anche da parte mia per affrontare il contenuto della domanda. A seconda dei fattori potrebbe esserci di più da fare. Questo approccio degrada l'host controllando da "rigoroso" a "alcuni" (la mia terminologia). Nella mia situazione che ha lasciato ssh con il permesso di impedirmi di accedere perché il modo in cui volevo accedere era inserire una password, e questo è stato disabilitato dal "alcuni" controllo dell'host. Quindi devi andare avanti e dirigere ssh per usare / dev / null come "UserKnownHostsFile". Questo imposta il controllo dell'host su "none" in effetti e si applicano le DIRE WARNINGS di cui sopra, quindi non andare avanti a livello globale o permanente.
cardiff space man

Questa è davvero una soluzione elegante. Grazie per la condivisione!
LeOn - Han Li,

10

Un altro modo per rimuovere StrictHostKeyChecking, quando è necessario farlo solo per un singolo server:

ssh <server> -o StrictHostKeyChecking=no

Ti consentirà di accedere ma non risolverà il problema in modo permanente.
Andres Canella,

Quando lo faccio mi dà la possibilità di aggiungere la chiave, che risolve il problema in modo permanente
Greg Dougherty,

Forse abbiamo un problema diverso? Mi sto collegando a un server che aveva un IP diverso prima.
Andres Canella,

Se si dispone di un server i cui dati sono stati modificati, è necessario eliminarli dal file degli host noti (dopo aver stabilito che la modifica è corretta) e aggiungere le nuove informazioni. Se hai un nuovo server, -o ti permetterà di connetterti al server e ottenere le sue informazioni aggiunte.
Greg Dougherty,

Penso che in realtà sia una buona pratica mantenere StrictHostKeyChecking impostato su YES nella tua configurazione e utilizzare questa opzione solo quando sai che ti stai collegando a un nuovo server o hai cambiato le chiavi su un vecchio server.
mohak,

5

Prima di tutto, questa è la tua macchina? Hai modificato consapevolmente le chiavi dell'host? Altrimenti sarei molto preoccupato che qualcosa abbia alterato quei dati.

In secondo luogo, attiva il debug di ssh,

ssh -vvv user@host

e vedi cosa ti dice, prova anche a cercare, / var / log / secure e / var / log / messaggi sul server a cui stai provando a connetterti per indizi, sshd dà buoni messaggi di errore.

In terzo luogo, questa macchina è connessa a Internet? Dovresti davvero consentire l'accesso root?


1
+1 per il commento sui login di root
Fahad Sadah,

Tutto ciò che serve perché si verifichi questo errore è il computer di destinazione che viene reinventato. Se ti stai connettendo a un bersaglio che si trova dalla tua parte di una DMZ, un attacco MitM è molto improbabile.
ktappe,

3

Lo stai ottenendo perché qualcosa è cambiato (come nuova scheda NIC, nuovo IP, modifica sul software del server, ecc.). Focus sulla sicurezza ha un bell'articolo sulla protezione della chiave host SSH .

Basta rimuovere la chiave (utilizzando SFTP o simili) dal server, modificando il $HOME/.ssh/known_hostsfile e accettarne una nuova alla successiva connessione.

È possibile che la connessione venga interrotta a causa dell'impostazione StrictHostKeyChecking. Vedi questa discussione per un problema simile.


2
Noooo, per favore non farlo. Ciò annulla totalmente la sicurezza fornita da questa funzione. Rimuovi solo la chiave specifica che è stata modificata, non tutti known_hosts.
Adam Gibbins,

5
Non ho raccomandato di rimuovere il file known_hosts, ho consigliato di modificarlo e rimuovere la chiave da esso.

Ooop, scusa, frainteso.
Adam Gibbins,

2
Questo messaggio non può certamente essere attivato da un nuovo indirizzo IP, tanto meno da una nuova scheda NIC. Vedi la risposta corretta di Adam Gibbins.
Bortzmeyer,

1
Prima di votare (sto scoprendo che le persone si innescano molto bene), fai le tue ricerche. Leggi questo articolo di Focus sulla sicurezza , securityfocus.com/infocus/1806 . Ne cito un po ': "Perché una chiave host può cambiare? La macchina a cui desideri connetterti è stata spostata in un nome DNS o indirizzo IP diverso, oppure è stata sostituita da una completamente nuova". Se una risposta è orribilmente errata, si prega di consentire la possibilità di una correzione. Dopotutto, questa è una wiki.

3

Come "host" [ampiamente definito, potrebbe essere qualsiasi cosa, da una reinstallazione / avvio multiplo a un computer completamente diverso con un indirizzo IP a cui ti sei connesso prima, ad esempio] sembra che il client ssh sia cambiato, ti sta dando il errore.

Non è necessario disattivare un controllo rigoroso, né è sensata la cancellazione all'ingrosso delle chiavi salvate.

È possibile avere due chiavi diverse elencate in known_hosts per un determinato nome host o indirizzo IP; dandoti 2 alternative a seconda che pensi di aver bisogno della chiave "vecchia" che è attualmente memorizzata in known_hosts

Eliminare la chiave particolare a cui si riferisce, in l377 di known_hosts per l'OP, oppure mantenere entrambi

Il modo più semplice per conservare entrambi, evitando la cancellazione delle chiavi in ​​known_hosts, è

  1. Modifica known_hosts per aggiungere # all'inizio della voce "precedente" a cui si fa riferimento in known_hosts [@ l377] temporaneamente
  2. Connetti [ssh all'host], accetta la richiesta di aggiungere 'automaticamente' la nuova chiave
  3. Quindi modificare di nuovo known_hosts per rimuovere #

più risposte su "Aggiungi la chiave host corretta in known_hosts" / più chiavi host ssh per nome host?


Non sapevo del trucco delle due chiavi. Questo non è un comportamento documentato, vero?
hackerb9
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.