SSH: impossibile stabilire l'autenticità dell'host <host>


83

Cosa significa questo messaggio? È un potenziale problema? Il canale non è sicuro?

O è semplicemente un messaggio predefinito che viene sempre visualizzato quando ci si connette a un nuovo server?

Sono abituato a vedere questo messaggio quando ho usato SSH in passato: ho sempre inserito il mio login con una password nel modo normale, e mi sono sentito bene perché non stavo usando chiavi private / pubbliche (che è molto più sicuro di una breve password). Ma questa volta ho impostato una chiave pubblica con ssh per la mia connessione a bitbucket ma ho ancora ricevuto il messaggio. Sono consapevole che il prompt passphrase alla fine è una misura di sicurezza aggiuntiva diversa per la decrittografia della chiave privata.

Spero che qualcuno possa dare una bella spiegazione di cosa si intende con questo messaggio "l'autenticità non può essere stabilita".

The authenticity of host 'bitbucket.org (207.223.240.181)' can't be established.

RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'bitbucket.org,207.223.240.181' (RSA) to the list of
known hosts.
Enter passphrase for key '/c/Users/Steven/.ssh/id_rsa':

2
Questo è davvero uno di quei messaggi "significa esattamente quello che dice". Significa che sshnon ha modo di dire che stai davvero parlando bitbucket.org. Se hai configurato un modo per farlo sapere, allora non funziona. Se non l'hai fatto, allora ti sta dicendo che non l'hai fatto.
David Schwartz,

Risposte:


71

Ti sta dicendo che non ti sei mai connesso a questo server prima d'ora. Se te lo aspettavi, è perfettamente normale. Se sei paranoico, verifica il checksum / l'impronta digitale della chiave usando un canale alternativo. (Ma nota che qualcuno che può reindirizzare la tua connessione ssh può anche reindirizzare una sessione del browser web.)

Se ti sei già connesso a questo server da questa installazione di ssh, allora il server è stato riconfigurato con una nuova chiave o qualcuno sta falsificando l'identità del server. A causa della gravità di un attacco man-in-the-middle, ti avverte della possibilità.

Ad ogni modo, hai un canale crittografato sicuro per qualcuno . Nessuno senza la chiave privata corrispondente all'impronta digitale 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40può decodificare ciò che si invia.

La chiave che usi per autenticarti non è correlata ... non vorrai inviare informazioni di autenticazione a un server fraudolento che potrebbe rubarle, quindi non dovresti aspettarti cambiamenti a seconda che tu abbia intenzione di usare una passphrase o chiave privata per accedere. Semplicemente non sei ancora arrivato così lontano nel processo.


Quindi, anche se esiste una terza parte malevola e rifiuto il messaggio, tutto quello che farò è inviargli la mia chiave pubblica e non sarà ancora in grado di decrittografare i miei dati? Quindi ora gli unici modi in cui i miei dati possono essere compromessi sono se (1) la mia chiave privata è compromessa o (2) i server di bitbucket sono compromessi o (3) il mio account bitbucket è compromesso. Finché limitano i tentativi di accesso (che sarei davvero sorpreso se non lo facessero) non ci sono davvero molte ragioni per essere paranoici a questo punto, eh?
Steven Lu,

10
@Steven: non gli stai inviando la tua chiave pubblica, ce l'ha già. Quello che stai facendo è usare la tua chiave privata per autenticare una sfida ... se si connettesse al vero bitbucket.org sostenendo di essere te, ricevesse la vera sfida e la usasse quando ti sfidava, avrebbe potuto ingannarti inviandogli una risposta valida che poi utilizza per ottenere l'accesso al tuo account sul vero bitbucket.org. Non ha ancora la tua chiave privata, quindi non può accedere in nessun momento futuro o a qualsiasi altra risorsa sbloccata dalla chiave, ma ha una sessione di accesso.
Ben Voigt,

Questo è ciò che intendevo nella mia risposta quando ho detto "non vorresti inviare informazioni di autenticazione a un server fraudolento".
Ben Voigt,

2
"Se sei paranoico, verifica il checksum / l'impronta digitale della chiave usando un canale alternativo." Per il paranoico (e per la cronaca), l'impronta digitale di Github è su help.github.com/articles/generating-ssh-keys e bitbucket è menzionata in confluence.atlassian.com/display/BITBUCKET/…
domenica

1
@BenVoigt Sì, lo capisco, il vero paranoico sarebbe ovviamente arrivato a quelle pagine attraverso una diversa rete non correlata, o forse sarebbe volato al quartier generale di Github e avrebbe ottenuto l'impronta digitale di persona :)
domenica

21

Diciamo che incontri qualcuno per scambiare alcuni segreti aziendali. Il tuo consulente ti dice che non hai mai incontrato quella persona prima e che può essere un impostore. Inoltre, per i prossimi incontri con lui, il tuo consulente non ti avvertirà più. Questo è ciò che significa il messaggio. La persona è il server remoto e il tuo advisor è il client ssh.

Non credo sia paranoico ricontrollare l'identità della persona prima di condividere i segreti con lei. Ad esempio potresti aprire una pagina web con una sua foto e confrontarla con la faccia di fronte a te. O controlla la sua carta d'identità.

Per il server bitbucket, è possibile utilizzare un computer diverso e più affidabile e ottenere l' immagine del suo volto da esso, quindi confrontarlo con quello che si ottiene nel computer che si sta utilizzando ora. Uso:

 ssh-keyscan -t rsa bitbucket.org | ssh-keygen -lv -f -

Se i volti corrispondono, è possibile aggiungere la chiave al file, ad esempio ~/.ssh/known_hosts(posizione standard in molte distribuzioni Linux) con:

ssh-keyscan -t rsa -H bitbucket.org >> ~/.ssh/known_hosts

e il client SSH non ti avvertirà perché conosce già la sua faccia . Confronterà i volti ogni volta che ti connetti. Questo è molto importante. Nel caso di un impostore (ad esempio un attacco man-in-the-middle), il client ssh rifiuterà la connessione perché la faccia sarà cambiata.


Questa risposta è molto utile
010110110101

4
Questa dovrebbe essere la risposta accettata: ssh-keyscan -t rsa -H bitbucket.org >> ~/.ssh/known_hosts grazie Ivan!
Rod,

1
@Rod: sceglieresti la risposta accettata in base a un comando che è sia totalmente inutile (puoi modificarlo known_hostssemplicemente digitando "sì" per l'avvertimento originale, come già mostrato nella domanda) che pericoloso (la chiave che hai aggiunto al tuo il file non è necessariamente lo stesso che hai visto, perché l'hai scaricato due volte!)?
Ben Voigt,

@BenVoigt ciò che questa soluzione prevede che digitando "yes" non è che questa soluzione è completamente gestibile da script. Presumo che la maggior parte delle persone riesca a capire come rispondere al "(sì / no)?" richiesta. Mi sono imbattuto in queste domande e risposte mentre cercavo di capire come risolvere questo problema senza intervento umano (per uno script di configurazione del server). Nella mia eccitazione credo di non aver notato che la domanda del PO è leggermente diversa dalla mia, ma IMO è ancora la risposta più utile / non ovvia nel thread.
Rod,

1
@Rod: No, non è utile. Ridurre la sicurezza è male. Trovare modi più rapidi per ridurre la sicurezza è l'esatto contrario di utile.
Ben Voigt,

5

Ho semplicemente dovuto creare il known_hostsfile di testo in~/.ssh

sudo vim ~/.ssh/known_hosts
sudo chmod 777 ~/.ssh/known_hosts

Dopo averlo fatto, ha aggiunto l'host e non ho più visto il messaggio.


Non penso che cambi davvero nulla. L'avviso viene visualizzato quando il server stesso è cambiato. Ad esempio, se esegui il provisioning di una nuova macchina virtuale a cui ti connetti per la prima volta. Il fatto che tu abbia o meno un known_hostsfile (con le autorizzazioni corrette) non gli impedisce di chiederti l'autenticità del nuovo server ... A meno che tu non abbia già in qualche modo recuperato la firma della chiave pub per questo server e lo abbia inserito nel tuo known_hosts, che è l'unico modo normale per saltare il controllo (anche se solo dire "sì" al controllo è spesso più veloce per ottenere lo stesso)
Steven Lu

Grazie. Avevo conosciuto host, ma continuavo a ricevere l'avvertimento. Ho dovuto solo modificare le autorizzazioni su known_hosts per interrompere gli avvisi.
ArcaneDominion

6
Per favore, non farlo. Può essere un serio pericolo per la sicurezza. Il tuo file host dovrebbe essere scrivibile solo da te. Il secondo comando consente sostanzialmente a chiunque nel tuo computer di falsificare le identità del server.
Stolz

"L'avviso viene visualizzato quando il server stesso è cambiato." O quando il server non è mai stato visitato prima.
Rod,

2

Esiste un altro modo semplice Basta toccare un file "config" in /root/.ssh e aggiungere il parametro StrictHostKeyChecking no La prossima volta quando si accede a un server, la chiave rsa verrà aggiunta a known_hosts e non chiederà "sì" per conferma di autenticità


3
Questo non è raccomandato È facile ma non è il modo corretto di affrontare la situazione.
Vikas,

1

Questo messaggio è solo SSH che ti dice che non ha mai visto questa particolare chiave host prima, quindi non è in grado di verificare veramente che ti stai connettendo all'host che pensi di essere. Quando dici "Sì", inserisce la chiave ssh nel tuo file known_hosts, quindi nelle connessioni successive confronterà la chiave che riceve dall'host con quella nel file known_hosts.

C'era un articolo correlato su overflow dello stack che mostrava come disabilitare questo avviso, https://stackoverflow.com/questions/3663895/ssh-the-authenticity-of-host-hostname-cant-be-established .


10
Non è consigliabile disabilitare l'avviso : è lì per uno scopo, fornendo informazioni di sicurezza molto utili.
Rory Alsop,

0

A parte le risposte già fornite (non ti sei mai connesso a questo host prima), c'è anche la netta possibilità che tu non ti sia mai connesso DALL'host corrente prima (a quell'host); questo è solo psicologicamente diverso; pensi di connetterti dall'host A (a B), mentre in realtà stai provando a connetterti dall'host X (a B). Questo può accadere, ad esempio, quando hai prima scritto da A a X e poi dallo stesso terminale prova a passare da S a B pensando di essere ancora su A.


Mi chiedo se l'uso dell'inoltro dell'agente ssh può anche sopprimere l'avvertimento se l'host A è a conoscenza di B ma X no, ma l'inoltro dell'agente avviene tra A e X. La maggior parte degli ambienti (che forniscono ssh) e le app terminali supportano l'inoltro dell'agente, aiuta ridurre il numero di chiavi SSH che devi gestire solo sui tuoi dispositivi finali.
Steven Lu,

0

Nel mio caso, meno login non funzionava a causa delle autorizzazioni della mia directory home perché ho modificato le impostazioni predefinite. Infine, ecco cosa ha funzionato per me. le autorizzazioni della mia directory home sono

/ Home / nomeutente

drwxr----x. 18 username     groupname  4096 May 11 11:52 username

/home/username/.ssh

268823097 drwx------   2 username groupname     29 May 11 11:53 .ssh

/home/nomeutente/.ssh/authorized_keys

-rw-r----- 1 username groupname 402 May 11 11:53 authorized_keys
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.