SSH: Qual è la differenza o l'interazione tra / etc / ssh / [file host] e ~ / .ssh / [chiave pubblica]

2

Sono nuovo di SSH dopo un decennio di dilettarsi con Ubuntu e altre build di Linux. Oggi ho installato con successo SSH, ma ho avuto alcuni rammarichi e mal di testa lungo la strada. Anche se il sistema funziona correttamente, non sono del tutto sicuro come funzioni, e questo mi sta facendo impazzire.

Il principale mal di testa che stavo incontrando da un po 'era questo:

  1. eseguivo SSH nella mia macchina Ubuntu tramite OS X e il comando "ssh". Quando l'ho fatto, ho ricevuto l'avvertimento che si trattava di un nuovo host a cui mi stavo connettendo e mi è stata data un'impronta digitale RSA.
  2. Avrei quindi potuto accedere alla mia macchina Ubuntu (tramite VNC) ed eseguire ssh-keygen -lf [chiave pubblica], e l'impronta era diversa .
  3. Frustrazione.

Dopo aver dato un'occhiata per un po ', ho scoperto /etc/ssh/ssh_host_rsa_key.pub. Per farla breve, ho controllato l'impronta digitale, e voilà, ecco dove OS X stava rilevando l'impronta digitale. All'interno della stessa cartella, vedo quella che sembra essere una chiave privata corrispondente (verificata controllando l'impronta digitale) Eccellente.

Quindi ora la mia ipotesi è che si tratta di chiavi predefinite preimpostate che è possibile utilizzare senza dover generare le proprie chiavi o nulla del genere. Poiché ho generato le mie chiavi (protette da password), volevo sostituirle. Così sono entrato nel file SSHD_config e ho cambiato la directory per la chiave RSA nella mia directory home (~ / .ssh / [chiave pubblica all'interno del file authorized_keys]). E poi ho cancellato ssh_host_rsa_key.pub. Non ha funzionato. Ho ricostruito le chiavi host, annullato la modifica della configurazione, ho lasciato la mia chiave pubblica generata nella home directory e spostato la chiave privata generata sul client. La connessione funziona benissimo e l'impronta digitale OS X (il mio client) mi suggerisce di associare ssh_host_rsa_key.pub.

Inoltre, so che la sicurezza funziona, perché se rimuovo il file authorized_keys da casa / .ssh /, il mio client non può più connettersi.

Le mie domande:

  1. Se OS X, il mio client, mi sta dicendo che l'impronta digitale è ssh_host_rsa_key.pub, perché riesco a connettermi senza una chiave privata corrispondente?

  2. Metti in modo diverso, quale ruolo gioca la chiave ssh_host (senza una chiave privata corrispondente sul client), quando anch'io ho bisogno che la chiave privata e pubblica generata sia posizionata correttamente?

  3. È esatto dire che ssh richiede due chiavi pubbliche e una chiave privata per connettersi correttamente? O dovrei sovrascrivere il contenuto di /etc/ssh/ssh_host_rsa_key.pub con i contenuti della mia chiave pubblica generata (che è anche negli utenti autorizzati)? [Modifica: ho provato a sostituire ssh_host_rsa_key.pub e ssh_host_rsa_key con le mie chiavi private e pubbliche generate (rinominate, ovviamente). Quando ho provato a riavviare il servizio SSH, ottengo "End deve essere KEY = VALUE coppie"). Così ho rotto il servizio SSH.]

Grazie in anticipo per l'aiuto. Sono stato su Google per ore e ho persino chiamato il mio amico più esperto di tecnologia, che lavora a Google. E non ho ricevuto risposta.

    
posta TheSecurityGuy 27.04.2015 - 19:21
fonte

1 risposta

7

Le chiavi host autenticano il server, le tue chiavi ti autenticano sul server.

La chiave host SSH fornisce un'impronta digitale che è possibile utilizzare per convalidare la connessione al server che si ritiene di essere. Verifica manualmente l'impronta digitale della chiave pubblica che ti viene presentata durante la prima connessione, quindi la salvi. Per ogni connessione successiva, il server ti invia qualcosa che dimostra che contiene la chiave privata che corrisponde a quella chiave pubblica, quindi sai che è il server che hai verificato manualmente la prima volta (... perché solo quel server ha quella chiave privata ).

Questo è completamente separato dalla coppia di chiavi che usi per autenticare te stesso sul server. Sono entrambe coppie di chiavi, sì, ma detenute da entità diverse, per scopi diversi, in diversi punti del processo di connessione.

In tutto, la connessione SSH richiede due coppie di chiavi -

  • Il software client controlla la chiave pubblica del server ( host ) sui dati che il server invia crittografati con la chiave privata host . Ciò richiede che tu abbia una copia della sua chiave pubblica, che ti viene consegnata alla prima connessione e il tuo cliente memorizza se la approvi.
  • Il server controlla i tuoi dati di autenticazione crittografati con la tua chiave privata utente utilizzando la copia della tua chiave pubblica utente di cui ha una copia perché la hai messa lì (o qualcuno ha messo lì per te)
risposta data 27.04.2015 - 19:27
fonte

Leggi altre domande sui tag