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).

bash
ssh-keygen -t ed25519 -C "accesso-server-produzione" -f ~/.ssh/produzione

Nello 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.

  1. Usa sempre una passphrase per le chiavi private, in modo che non possano essere utilizzate da altri semplicemente “copiando” il file della chiave
  2. Non riutilizzare la stessa chiave per tutti i servizi: se la chiave viene compromessa, si compromettono tutti gli accessi
  3. Esegui un backup sicuro delle chiavi private (ad esempio in un password manager)
  4. Revoca le chiavi quando non servono più (rimuovile dal file authorized_keys)