Le chiavi SSH permettono di autenticarsi in modo sicuro su sistemi e servizi remoti, come server, repository Git e altro. Questo metodo sfrutta la crittografia asimmetrica (chiave pubblica e chiave privata) per stabilire una connessione autenticata e protetta, eliminando la necessità di inserire password.
La Crittografia Asimmetrica
La crittografia asimmetrica è un sistema che utilizza due chiavi matematicamente correlate ma distinte: una pubblica e una privata. La caratteristica fondamentale è che ciò che viene cifrato con una chiave può essere decifrato solo con l’altra.
| Caratteristica | Chiave Privata | Chiave Pubblica (.pub) |
|---|---|---|
| Dove si trova | Solo sul tuo computer (~/.ssh/) |
Sui sistemi remoti (es. ~/.ssh/authorized_keys) |
| Condivisione | Mai condividere | Può essere distribuita liberamente |
| Funzione | Dimostra la tua identità | Verifica l’identità di chi si collega |
| Permessi file | 600 (solo proprietario) |
644 (leggibile da tutti) |
In sintesi, la coppia di chiavi è composta da: una chiave privata che deve essere custodita e mai condivisa, che serve per dimostrare la tua identità, e una chiave pubblica da distribuire sui sistemi e servizi a cui vuoi accedere.
Generare una Chiave SSH
In questo esempio andremo a generare una chiave SSH utilizzando come metodo di cifratura l’algoritmo Ed25519 , che al momento della scrittura di questa guida è considerato il più moderno e sicuro disponibile. Utilizza curve ellittiche (Curve25519), produce chiavi corte ma estremamente sicure, ed è supportato da OpenSSH 6.5+ (2014). Per generare la chiave è possibile utilizzare il seguente comando (da modificare nei parametri).
ssh-keygen -t ed25519 -C "accesso-server-produzione" -f ~/.ssh/produzioneNello specifico, i parametri utilizzati per la generazione di questa chiave sono descritti nella tabella sottostante.
| Parametro | Descrizione |
|---|---|
-t ed25519 |
Specifica l’algoritmo di crittografia |
-C "accesso-server-produzione" |
Aggiunge un commento identificativo alla chiave |
-f ~/.ssh/produzione |
Percorso e nome del file della chiave |
Durante il processo di generazione ti verrà chiesto se vuoi inserire una Passphrase (ossia una password) per proteggere la chiave privata. È opzionale ma da molti consigliata, in quanto se qualcuno dovesse accedere al tuo filesystem, senza la passphrase da te inserita la chiave sarebbe inutilizzabile.
Dopo l’esecuzione troverai due file: ~/.ssh/produzione che è la chiave privata (da non condividere MAI) e ~/.ssh/produzione.pub che è la chiave pubblica (da copiare sui sistemi remoti o caricare sui servizi come GitHub, GitLab, ecc.).
Buone Pratiche di Sicurezza
Le chiavi SSH sono un ottimo metodo per autenticarsi su sistemi e servizi remoti, ma è comunque necessario seguire alcune regole per aumentare il livello di sicurezza.
- Usa sempre una passphrase per le chiavi private, in modo che non possano essere utilizzate da altri semplicemente “copiando” il file della chiave
- Non riutilizzare la stessa chiave per tutti i servizi: se la chiave viene compromessa, si compromettono tutti gli accessi
- Esegui un backup sicuro delle chiavi private (ad esempio in un password manager)
- Revoca le chiavi quando non servono più (rimuovile dal file
authorized_keys)