Generare una chiave SSH richiede un paio di minuti e un solo comando, che è praticamente identico su Windows, macOS e Linux. In questa guida vediamo la procedura passo per passo su tutti e tre i sistemi, come copiare la chiave pubblica e come risolvere i problemi più frequenti.
Se non hai ben chiaro cosa sia una chiave SSH e perché sia meglio di una password, leggi prima Chiavi SSH: cosa sono e perché sono meglio delle password.
Il comando, uguale per tutti
Lo strumento si chiama ssh-keygen e fa parte di OpenSSH, già incluso in macOS, nelle distribuzioni Linux e in Windows 10 e 11. Il comando consigliato è:
ssh-keygen -t ed25519 -C "mario@portatile"
-t ed25519sceglie il tipo di chiave: Ed25519 è moderno, sicuro e compatto.-C "..."aggiunge un commento per riconoscere la chiave. Mettici qualcosa che ti dica chi e da quale dispositivo: tornerà utile quando avrai più chiavi.
Solo se devi collegarti a sistemi molto vecchi che non supportano Ed25519, puoi usare RSA con una lunghezza adeguata:
ssh-keygen -t rsa -b 4096 -C "mario@portatile"
Su Windows
- Apri PowerShell o Terminale Windows (cerca «PowerShell» nel menu Start). Non servono privilegi di amministratore.
- Verifica che il client SSH sia presente:
ssh -VSe risponde con una versione di OpenSSH, sei a posto. Se il comando non viene trovato, il client va abilitato dalle funzionalità facoltative di Windows (cerca «Funzionalità facoltative» nelle Impostazioni e aggiungi «Client OpenSSH»).
- Genera la chiave:
ssh-keygen -t ed25519 -C "mario@pc-ufficio" - Quando chiede dove salvarla, premi Invio per accettare il percorso predefinito (
C:\Users\TuoNome\.ssh\id_ed25519). - Inserisci una passphrase e confermala. Mentre la digiti non vedrai nulla a schermo: è normale.
Per visualizzare la chiave pubblica da copiare:
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub
Oppure, per copiarla direttamente negli appunti:
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | Set-Clipboard
Se usi PuTTY: PuTTY usa un suo formato di chiave (.ppk) e ha un generatore dedicato, PuTTYgen. Puoi creare la chiave lì, oppure importare in PuTTYgen quella appena generata con ssh-keygen e salvarla in formato .ppk. In ogni caso la chiave pubblica da installare sul server è la riga di testo che inizia con ssh-ed25519 (o ssh-rsa).
Su macOS
- Apri Terminale (Applicazioni › Utility, oppure cerca «Terminale» con Spotlight).
- Genera la chiave:
ssh-keygen -t ed25519 -C "mario@macbook" - Premi Invio per accettare il percorso
~/.ssh/id_ed25519. - Scegli una passphrase.
Per copiare la chiave pubblica negli appunti:
pbcopy < ~/.ssh/id_ed25519.pub
Per non dover ridigitare la passphrase a ogni collegamento, puoi salvarla nel Portachiavi di macOS:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
E aggiungere queste righe al file ~/.ssh/config (crealo se non esiste):
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_ed25519
Su Linux
- Apri il terminale della tua distribuzione.
- Se il comando
ssh-keygennon c’è (raro), installa il pacchetto del client OpenSSH con il gestore pacchetti della distribuzione, per esempioopenssh-clientsu Debian e Ubuntu. - Genera la chiave:
ssh-keygen -t ed25519 -C "mario@linux" - Accetta il percorso predefinito e scegli una passphrase.
Per vedere la chiave pubblica:
cat ~/.ssh/id_ed25519.pub
Per caricarla nell’agente e inserire la passphrase una sola volta per sessione:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
Su molti desktop Linux l’agente è già attivo e ti chiederà la passphrase in una finestra al primo utilizzo.
Cosa ottieni alla fine
Nella cartella .ssh troverai due nuovi file:
| File | Cosa farne |
|---|---|
id_ed25519 |
Chiave privata. Non copiarla, non inviarla, non caricarla da nessuna parte. |
id_ed25519.pub |
Chiave pubblica. È questa che va sul server. |
La chiave pubblica è una sola riga che inizia con ssh-ed25519. Quando la copi, assicurati di prenderla tutta, su un’unica riga, senza spazi o ritorni a capo aggiunti: è l’errore più frequente.
Esiste già una chiave?
Se ssh-keygen ti avvisa che il file esiste già e chiede se sovrascriverlo, rispondi no: potresti già usare quella chiave per altri server, e sovrascrivendola perderesti l’accesso. Hai due strade:
- usare la chiave esistente (vai direttamente a copiare il file
.pub); - crearne una nuova con un nome diverso:
ssh-keygen -t ed25519 -C "mario@portatile-hosting" -f ~/.ssh/id_ed25519_hostingIn questo caso, al collegamento dovrai indicare quale chiave usare con
-i ~/.ssh/id_ed25519_hosting, oppure configurarla una volta per tutte nel file~/.ssh/config, come vediamo nella guida successiva.
Problemi frequenti
- «WARNING: UNPROTECTED PRIVATE KEY FILE!» (macOS/Linux): i permessi della chiave sono troppo larghi. Correggili così:
chmod 700 ~/.ssh chmod 600 ~/.ssh/id_ed25519 - «ssh-keygen non è riconosciuto come comando» (Windows): manca il client OpenSSH, vedi il passo 2 della sezione Windows.
- Ho dimenticato la passphrase: non si può recuperare. Genera una nuova coppia di chiavi e sostituisci la pubblica sul server.
- La chiave pubblica incollata «non funziona»: quasi sempre è spezzata su più righe o tagliata. Ricopiala con i comandi indicati sopra.
Il passo successivo
Ora che hai la tua coppia di chiavi, devi installare la parte pubblica sul server. 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. Trovi la procedura completa in Usare la chiave SSH sul tuo hosting.