Errore chiave SSH, sudo funziona correttamente

3

Quando provo a ssh ( using ssh [email protected] ) nel mio server a casa dalla rete locale o dall'esterno, ottengo il seguente errore:

Maseuso[email protected],funzionasenzaproblemi:

Sono sicuro che ho solo bisogno di inserire un qualche tipo di chiave nella directory /Users/mattlove/.ssh/known_hosts , ma non sono sicuro di come o perché.

Qualcuno di voi buff UNIX là fuori ha una risposta?

E D I T:

Ecco i risultati dell'esecuzione di ls -l ~/.ssh/known_hosts come richiesto da @ LoïcWolff

    
posta Matt Love 19.01.2012 - 15:08
fonte

2 risposte

10

La prima volta che ti connetti a un server, ti viene chiesto di accettare l'impronta digitale per l'host a cui ti stai connettendo. L'impronta digitale è una combinazione di una firma digitale, il nome host e l'indirizzo IP del server. Quando lo accetti, l'impronta digitale viene salvata in ~/.ssh/known_hosts come host "fidato".

Per qualche motivo, l'impronta digitale del server è cambiata dalla prima volta che ci si è connessi. Ciò potrebbe essere dovuto al fatto che non è il server che ci si aspetta che sia, ad esempio quando la richiesta viene intercettata e reindirizzata su un altro server. Da qui l'avviso di sicurezza. La spiegazione potrebbe anche essere meno dannosa, ad esempio quando il server è stato sostituito / reinstallato senza ripristinare la sua firma digitale precedente o quando l'indirizzo IP è cambiato.

Se nonostante l'avviso di sicurezza, ti fidi ancora del server a cui ti stai connettendo, dovresti aprire ~/.ssh/known_hosts e cercare la riga che inizia con l'indirizzo del server a cui ti stai connettendo. Rimuovere l'intera riga e salvare le modifiche, quindi riconnettersi al server. La prima volta che ti connetti, dovrebbe nuovamente richiedere di accettare l'impronta digitale aggiornata, dopo di che non dovresti avere più problemi di connessione a quell'host.

Il motivo per cui funziona con sudo è perché in quelle condizioni lo stai facendo come utente diverso (root), e ogni utente ha il proprio file known_hosts (per root si trova a /private/var/root/.ssh/known_hosts ). root potrebbe non aver mai registrato l'impronta digitale precedente di quell'host e quindi non ha modo di confrontarlo con quello corrente e non c'è ragione di diffidare del server.

    
risposta data 19.01.2012 - 15:34
fonte
5

Il file known_hosts contiene le chiavi degli host a cui ti sei collegato in precedenza e hai verificato di aver controllato che la firma della chiave sia corretta.

Nel tuo caso, una delle due cose è accaduta,

  1. La chiave sul server è cambiata da quando l'hai approvata per il tuo account, ma non da quando è stata approvata per l'account root .
  2. C'è un utente malintenzionato che intercetta le comunicazioni tra te e il server e hai approvato la chiave per l'account root e hai la chiave corretta nel tuo account.

Molto probabilmente è il caso 1: gli attacchi man-in-the-middle su SSH, anche se possibili, sono relativamente rari. L'avviso è lì per avvisarti del fatto che qualcuno potrebbe intercettare le tue comunicazioni, anche se le possibilità di questo sono piuttosto basse.

Per risolvere questo problema, apri il file known_hosts e rimuovi la voce per l'host in questione. Contattare l'amministratore di sistema per l'host e chiedere loro l''impronta digitale della chiave host'. Riattiva la tua connessione, verifica che l'impronta digitale corrisponda a quella che ottieni dall'amministratore di sistema e approva la chiave.

Se l'impronta digitale non corrisponde a quella fornita dall'amministratore di sistema dell'host remoto, NON approvare la chiave !!

    
risposta data 19.01.2012 - 15:34
fonte

Leggi altre domande sui tag