Quando ti colleghi a un server via SSH devi dimostrare di essere tu. Il modo più ovvio è la password, ma non è il migliore. Esiste un’alternativa più sicura e, una volta configurata, anche più comoda: le chiavi SSH. In questo articolo vediamo cosa sono, come funzionano e perché conviene usarle.
Una coppia di chiavi, non una sola
Una chiave SSH è in realtà una coppia di file generati insieme sul tuo computer:
- la chiave privata, che resta sul tuo computer e non deve uscirne mai;
- la chiave pubblica, che puoi dare a chiunque, e che si installa sul server a cui vuoi accedere.
Le due chiavi sono legate da un rapporto matematico: quello che si «firma» con la privata si può verificare con la pubblica, ma dalla pubblica non si può ricavare la privata. Ecco perché la pubblica può circolare liberamente.
Un’analogia che funziona bene: la chiave pubblica è un lucchetto che lasci montato sulla porta del server; la chiave privata è l’unica chiave che lo apre, e ce l’hai solo tu in tasca.
Cosa succede quando ti colleghi
- Il tuo client SSH dice al server: «vorrei entrare con questa chiave».
- Il server controlla se quella chiave pubblica è nell’elenco delle chiavi autorizzate per il tuo utente (il file
~/.ssh/authorized_keys). - Se c’è, il server propone una sfida che solo chi possiede la chiave privata corrispondente può risolvere.
- Il tuo client la risolve usando la chiave privata, senza mai inviarla: viaggia solo la risposta.
- Il server verifica la risposta e ti fa entrare.
Il punto fondamentale è il quarto: con la password, il segreto viene trasmesso al server a ogni accesso (cifrato, ma trasmesso). Con le chiavi, il segreto non lascia mai il tuo computer.
Perché sono meglio delle password
| Password | Chiave SSH | |
|---|---|---|
| Indovinabile? | Sì, se è debole o riutilizzata: i tentativi automatici sono continui su Internet. | In pratica no: è lunghissima e casuale. |
| Il segreto viaggia in rete? | Sì, a ogni accesso. | No, mai. |
| Rubabile con phishing? | Sì, basta che tu la digiti nel posto sbagliato. | Molto più difficile: non la digiti da nessuna parte. |
| Comodità | Da digitare ogni volta. | Accesso immediato, anche da script e strumenti automatici. |
| Revoca | Cambi la password, e la devi ridistribuire a tutti. | Togli dal server solo la chiave da revocare: le altre continuano a funzionare. |
L’ultima riga è più importante di quanto sembri. Se un collaboratore deve lavorare sul tuo sito per un mese, puoi aggiungere la sua chiave pubblica e toglierla quando ha finito, senza mai dargli una tua password.
La passphrase: una password per la chiave
Quando generi una chiave, ti viene chiesta una passphrase. È facoltativa, ma la consigliamo: cifra il file della chiave privata sul tuo computer. Così, se qualcuno ti rubasse il portatile o copiasse quel file, non potrebbe usarlo senza conoscere la passphrase.
«Ma allora devo comunque digitare qualcosa?» Sì, però solo in locale, e con un agente SSH (ssh-agent, già presente su macOS, Linux e Windows) la inserisci una volta per sessione e poi non te la chiede più. Su macOS può anche essere salvata nel Portachiavi.
La passphrase non viaggia mai verso il server: serve solo a sbloccare la chiave sul tuo computer.
Che aspetto ha una chiave
La chiave pubblica è una sola riga di testo, più o meno così:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI...resto-della-chiave... mario@portatile
Tre parti: il tipo di chiave, la chiave vera e propria e un commento finale (di solito utente e nome del computer) che serve solo a te per riconoscerla.
La chiave privata invece è un file di più righe che inizia con -----BEGIN OPENSSH PRIVATE KEY-----. Se qualcuno ti chiede di incollare quello, la risposta è no, chiunque sia. Noi non te lo chiederemo mai.
Quale tipo di chiave scegliere
- Ed25519: è la scelta consigliata oggi. Chiavi corte, veloci e molto sicure. Supportata da tutti i sistemi recenti.
- RSA: la più diffusa storicamente. Va bene se usi una lunghezza adeguata (almeno 3072 bit, meglio 4096), utile solo se hai a che fare con software molto vecchi.
- Tipi più vecchi come DSA sono da evitare: i client moderni li hanno disattivati.
Dove stanno i file
Su tutti i sistemi le chiavi si trovano nella cartella .ssh della tua home:
| File | Cos’è | Dove va |
|---|---|---|
id_ed25519 |
Chiave privata | Solo sul tuo computer |
id_ed25519.pub |
Chiave pubblica | Sul server, nell’elenco delle chiavi autorizzate |
known_hosts |
Impronte dei server già visitati | Sul tuo computer, gestito in automatico |
authorized_keys |
Elenco delle chiavi pubbliche ammesse | Sul server |
Su Windows la cartella è C:\Users\TuoNome\.ssh\, su macOS e Linux ~/.ssh/.
Errori comuni da evitare
- Inviare la chiave privata per email o chat, magari «per fare prima». Se è successo, considerala compromessa: generane una nuova e togli la vecchia dal server.
- Usare la stessa chiave senza passphrase su tanti computer. Meglio una chiave per dispositivo: se perdi il telefono o il portatile, revochi solo quella.
- Dimenticare le chiavi dei vecchi collaboratori sul server. Ogni tanto dai un’occhiata all’elenco e togli quelle che non servono più.
- Permessi troppo larghi sui file: su macOS e Linux la chiave privata deve essere leggibile solo da te, altrimenti il client si rifiuta di usarla.
Come si comincia
La procedura è in due passi:
- Generi la coppia di chiavi sul tuo computer (Windows, macOS o Linux: bastano un paio di minuti).
- Aggiungi la chiave pubblica al tuo hosting. Da noi la aggiungi dal pannello DirectAdmin, nella sezione delle chiavi SSH, e ti colleghi sulla porta 7530 con il nome utente del tuo account.
Se non hai mai usato SSH, prima di tutto leggi Cos’è SSH e a cosa serve. E se qualcosa non torna, scrivici dall’area clienti: ti aiutiamo volentieri a configurare tutto.