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 ed25519 sceglie 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

  1. Apri PowerShell o Terminale Windows (cerca «PowerShell» nel menu Start). Non servono privilegi di amministratore.
  2. Verifica che il client SSH sia presente:
    ssh -V

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

  3. Genera la chiave:
    ssh-keygen -t ed25519 -C "mario@pc-ufficio"
  4. Quando chiede dove salvarla, premi Invio per accettare il percorso predefinito (C:\Users\TuoNome\.ssh\id_ed25519).
  5. 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

  1. Apri Terminale (Applicazioni › Utility, oppure cerca «Terminale» con Spotlight).
  2. Genera la chiave:
    ssh-keygen -t ed25519 -C "mario@macbook"
  3. Premi Invio per accettare il percorso ~/.ssh/id_ed25519.
  4. 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

  1. Apri il terminale della tua distribuzione.
  2. Se il comando ssh-keygen non c’è (raro), installa il pacchetto del client OpenSSH con il gestore pacchetti della distribuzione, per esempio openssh-client su Debian e Ubuntu.
  3. Genera la chiave:
    ssh-keygen -t ed25519 -C "mario@linux"
  4. 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_hosting

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

Altri articoli su SSH, terminale e sviluppo

Parliamone

Un hosting che ti spiega le cose, e poi le fa

Questi articoli nascono dalle domande dei nostri clienti. Se vuoi un hosting dove dietro ogni risposta c’è un tecnico vero, parliamone.

  • 4,9 su 5 su Trustpilot264 recensioni, il 96% a cinque stelle
  • Risponde un tecnicoIn italiano, da chi gestisce i server
  • Il trasloco lo facciamo noiSito, database e posta, controllati prima di spostare i DNS