Comando ssh-keygen in Linux: creare chiavi SSH e controllare le impronte

ssh-keygen crea la coppia di chiave privata e chiave pubblica usata per l'autenticazione SSH e permette di leggerne l'impronta. Conserva la chiave privata sotto il tuo controllo e registra sul server soltanto la chiave pubblica: il file privato non deve essere inviato per abilitare l'accesso.

Con SSH, cioè Secure Shell, il client dimostra di possedere la chiave privata tramite una firma; il server verifica la firma con la chiave pubblica autorizzata. Un nome tipico è id_ed25519 per il file privato e id_ed25519.pub per quello pubblico. L'estensione è una convenzione: controlla sempre quale file stai usando.

L'impronta, o fingerprint, è un identificatore compatto derivato dalla chiave. Una passphrase protegge il file privato a riposo, aggiungendo una difesa in caso di furto del file; non sostituisce permessi adeguati, backup protetti e controllo dell'accesso al computer.

Sintassi e preparazione

ssh-keygen [option]

Consulta man ssh-keygen e verifica la versione dell'installazione OpenSSH, ad esempio con ssh -V. I tipi di chiave e le opzioni supportate possono variare. Gli esempi seguenti creano una chiave utente Ed25519 con un nome esplicito: non sono comandi per sostituire le chiavi host del server.

Prima di procedere, verifica che ~/.ssh esista e sia accessibile soltanto secondo i permessi appropriati e che i file id_ed25519_work e id_ed25519_work.pub non siano già presenti. Se esistono, scegli un nome nuovo. Non eseguire la generazione con sudo soltanto per superare un errore di permessi: rischieresti di lavorare nell'account o nel percorso sbagliato.

Esempi: generazione, impronta e chiave pubblica

Creare una coppia Ed25519. Questo comando sceglie il tipo e il percorso e aggiunge un commento riconoscibile:

ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_work -C 'user@example.com'

Il programma chiede una passphrase e la relativa conferma. Scegli una frase segreta robusta e conservala in modo sicuro; il commento user@example.com è soltanto un'etichetta, non imposta l'account remoto e non prova la proprietà di un indirizzo email. Sostituiscilo con un commento utile senza inserirvi informazioni riservate.

Al termine devono esserci due file: la chiave privata nel percorso indicato e la corrispondente pubblica con suffisso .pub. Se appare una domanda di sovrascrittura inattesa, interrompi e ricontrolla il nome invece di confermare automaticamente.

Leggere l'impronta della pubblica. Controlla che sia la chiave che intendi autorizzare:

ssh-keygen -lf ~/.ssh/id_ed25519_work.pub

Confronta l'impronta completa, non soltanto il commento o il nome del file. Copiare lo stesso file pubblico mantiene la stessa identità della chiave; creare una coppia nuova produce normalmente un'impronta diversa. L'impronta di una chiave utente non è la stessa cosa della chiave host che ssh verifica per identificare il server.

Ricavare di nuovo la pubblica. Se hai perso il file pubblico ma possiedi ancora il privato utilizzabile:

ssh-keygen -y -f ~/.ssh/id_ed25519_work

Il comando legge il file privato e scrive la chiave pubblica sullo standard output; se il privato è cifrato, serve la sua passphrase. Non invia il privato a un servizio esterno. Puoi conservare l'output come nuovo file pubblico dopo avere controllato la destinazione; una redirezione > può troncare un file esistente. Non usarla verso il file privato.

Interpretare il risultato di fingerprint

Puoi rileggere l'impronta dopo la generazione o prima della registrazione sul server:

ssh-keygen -lf ~/.ssh/id_ed25519_work.pub

Formato illustrativo; i puntini sostituiscono il vero valore e non costituiscono un'impronta valida da confrontare:

256 SHA256:... user@example.com (ED25519)
  • 256 è la dimensione riportata per questa chiave; non va interpretata come una misura universale del livello di sicurezza confrontabile direttamente tra algoritmi.
  • SHA256:... identifica l'impronta calcolata con SHA-256. Per un confronto usa lo stesso algoritmo e il valore completo.
  • user@example.com è il commento identificativo e ED25519 il tipo di chiave.

L'impronta aiuta a riconoscere la chiave, ma non attribuisce da sola un'identità fidata al suo proprietario. Se qualcuno ti comunica una nuova impronta, verifica anche la fonte e il contesto in cui deve essere autorizzata.

Opzioni principali

Opzione Funzione
-t tipo Sceglie il tipo della chiave da generare, per esempio ed25519.
-f file Specifica il file da creare o leggere, secondo l'operazione.
-C commento Imposta un commento identificativo; non è un account o un'autorizzazione.
-l Mostra l'impronta della chiave indicata.
-y Legge un privato OpenSSH e stampa la corrispondente chiave pubblica.
-p Cambia la passphrase di un file di chiave privata esistente.

Per cambiare la passphrase usa, sul file corretto, ssh-keygen -p -f ~/.ssh/id_ed25519_work: il programma chiede quella attuale e la nuova. Cambiare la passphrase ricifra lo stesso materiale di chiave e non equivale a generare una coppia nuova. Non inserire le passphrase reali come argomenti copiati nella cronologia della shell.

In una prova locale del 3 novembre 2026 con OpenSSH 10.3p1 di Git per Windows è stata creata una coppia Ed25519 di test protetta da passphrase, letta l'impronta e ricavata la pubblica con -y. Dopo un cambio della passphrase, la parte pubblica è risultata identica. La chiave non è stata registrata su server e il privato di prova è stato rimosso; la prova riguarda queste operazioni locali, non un accesso SSH su Linux.

Proteggere il privato e sostituire una chiave

Sovrascrivere il vecchio file privato può impedirti di accedere ai server che autorizzano soltanto la vecchia pubblica. Genera una nuova coppia con un nome distinto, registra la nuova pubblica attraverso il canale amministrativo previsto e verifica l'accesso prima di rimuovere la vecchia autorizzazione. Mantieni un accesso alternativo durante la sostituzione.

Non caricare il privato in email, chat o moduli web e non distribuirlo insieme alla pubblica. Limita l'accesso al file e proteggi anche le copie di backup. Il fatto che un file finisca in .pub non basta a renderne sicuro il contenuto se è stato rinominato per errore: controlla di condividere effettivamente una chiave pubblica.

La passphrase dimenticata non si può recuperare tramite ssh-keygen né cambiare senza poter sbloccare il privato. Se non hai un modo legittimo di recuperarla, predisponi una nuova coppia e aggiorna le autorizzazioni sui server con un accesso amministrativo disponibile. Se temi che il privato sia stato compromesso, cambiarne soltanto la passphrase sul tuo computer non revoca le copie già sottratte: sostituisci anche la chiave autorizzata.

Domande frequenti

Quale file devo registrare sul server?

La chiave pubblica, normalmente il file con suffisso .pub, seguendo la procedura dell'amministratore. Conserva il privato sotto il tuo controllo: il server non ne ha bisogno per verificare l'autenticazione a chiave pubblica.

Posso ricostruire il privato dal file pubblico?

No: -y permette di ottenere la pubblica da un privato utilizzabile, non l'operazione inversa. Se manca il privato e non hai un backup accessibile, serve una nuova coppia e una nuova autorizzazione.

Documentazione ufficiale

Consulta il manuale OpenSSH di ssh-keygen per il comportamento delle opzioni e le differenze tra generazione, impronte e gestione delle passphrase.