Dove viene generata / memorizzata l'impronta digitale del server SSH?


44

Ho installato openssh-server e creato una chiave con ssh-keygen. Ho quindi provato a testarlo utilizzando il port forwarding locale facendo ssh -L 8080:www.nytimes.com:80 127.0.0.1. Tuttavia, l'impronta digitale chiave fornita da questo comando non è l'impronta digitale chiave che ottengo quando lo faccio ssh-keygen -l. Anche se cancello la mia directory .ssh, ottengo sempre la stessa impronta digitale, che non è quella con cui ho creato ssh-keygen. C'è un'altra chiave sul mio sistema? Dov'è questa chiave? Come posso selezionare questa chiave per essere utilizzata da openssh-server?

Risposte:


59

Quando si effettua una sessione SSH, vengono coinvolte due diverse coppie di chiavi (con un'impronta digitale per ogni coppia). Uno è la chiave dell'utente in cui è memorizzata ~/.ssh. L'identità della chiave SSH dell'utente viene talvolta utilizzata come credenziale per accedere a un altro computer (se è stato impostato l'accesso basato su chiave).

L'altra è la chiave del server SSH. Questa è la chiave per cui vedi l'impronta digitale quando ti connetti a un server diverso per la prima volta. L'identità di questa chiave viene utilizzata per accertarsi di accedere al server SSH che si intende. Questo è importante se si utilizzano password perché non si vorrebbe provare ad accedere inavvertitamente a una macchina attaccante: l'attaccante otterrebbe la password quando la si digita. Quindi l'attaccante potrebbe accedere alla macchina che si pensava stesse effettuando l'accesso a! (questo è noto come un "uomo nel mezzo dell'attacco" ) Le chiavi utilizzate da un server SSH per identificarsi quando si accede ad esso si trovano /etc/ssh/e di solito hanno un nome simile ssh_host_rsa_key.

Puoi effettivamente cambiare la posizione in cui il server SSH cerca la chiave nel file con l' impostazione./etc/ssh/sshd_configHostKey /path/to/host/key

Per impostazione predefinita, ssh-keygencreerà una chiave per l'utente corrente, che, per impostazione predefinita, verrà archiviata ~/.ssh. Il formato di una chiave utente e una chiave del server è lo stesso; la differenza è dove sono collocati e se /etc/ssh/sshd_configha una HostKeydirettiva che li punta. Quando si installa il pacchetto openssh-server, genera automaticamente le chiavi da usare per il server. Ecco da dove provengono le chiavi con l'impronta digitale sconosciuta. Se si desidera vedere l'impronta digitale della chiave del server SSH (RSA *), è possibile eseguire ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub.

* Esistono diversi algoritmi di crittografia. Ognuno usa una chiave diversa. Quelli comuni sono DSA (debole), RSA (vecchia impostazione predefinita) ed ECDSA (nuova impostazione predefinita).


1
I risultati di Google per "imposta impronta digitale ssh", anche se questi termini sono tecnicamente errati, sono sorprendentemente cattivi. Bene, ho trovato questo tra loro.
Bart van Heukelom,

4
Grazie per questo. Una nota: 'sudo' non è richiesto se si punta ssh-keygen sulla chiave pubblica. Cioè: ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub. Inoltre, per la mia installazione, era la chiave ECDSA, e non la chiave RSA, che il demone ssh stava usando, quindi in effetti quello che dovevo eseguire era ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub.
John Clements,

C'è qualche problema con ottenere le chiavi pubbliche dal mio vecchio disco rigido e usarle nella mia nuova installazione, sovrascrivendole in / etc / ssh? Una chiave è una chiave, giusto?
Adam

@Adam Non vedo alcun problema nel farlo. Ciò dovrebbe aiutare a evitare problemi quando si accede in remoto e la chiave è cambiata (cosa che succede se si reinstalla una nuova chiave viene generata.)
Azendale,

3
Quando mi connetto ssha un host dalla 14.04 per la prima volta, mostra l'impronta digitale MD5. Per fare in modo che ssh-keygen16.04 mostri l'impronta digitale MD5, è necessario utilizzare l' -E md5opzione.
jarno,

15

Le chiavi dell'host SSH sono archiviate /etc/ssh/, che generalmente non è necessario scegliere. Queste chiavi sono state generate quando è stato installato il pacchetto openssh-server.

Puoi elencare l'impronta digitale delle chiavi ssh-keygen -l -f /etc/ssh/ssh_host_key.pubanche se dovrai ripeterla per ogni chiave pubblica.

 


7

ssh-keygennon genera l'impronta digitale SSH sul tuo server. Questo è generato dal server SSH. ssh-keygencrea una coppia di chiavi pubblica / privata per il sistema che è possibile utilizzare in seguito per accedere al server SSH senza dover trasmettere un codice di accesso in chiaro al server.

L'impronta digitale del server ovviamente non verrà visualizzata come l'impronta digitale della coppia di chiavi pubblica / privata generata, poiché sono separate l'una dall'altra.


3
Nota che dovresti essere in grado di generare chiavi ssh per il tuo server (contrariamente a quello che dici) ma devi solo metterle nel posto giusto in modo che vengano utilizzate a tale scopo.
Azendale,
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.