Come usare le stesse chiavi SSH su più computer

Il consiglio più comune è una chiave per dispositivo: esegui ssh-keygen -t ed25519 su ogni computer e aggiungi ogni chiave pubblica a ~/.ssh/authorized_keys sui tuoi server. Se perdi un portatile, basta togliere una riga. Copiare una sola chiave privata su tutti i dispositivi funziona anche, se ha una passphrase, viaggia cifrata e ha permessi 600, ma quando perdi un dispositivo devi sostituire la chiave ovunque.

Aggiornata il . Creazione della chiave, aggiunta di una seconda chiave pubblica tramite un accesso già esistente, elenco dei fingerprint, rimozione di un dispositivo tramite il commento, cambio della passphrase e verifica della coppia con ssh-keygen -y provati con OpenSSH 10.0 su Debian 13, client e server in un container usa e getta.

Due modi per farlo

Ogni dispositivo che si collega con una chiave ha bisogno di una chiave privata. Puoi dare a ogni dispositivo la sua, oppure copiare la stessa su tutti.

Una chiave per dispositivoUna chiave copiata
ConfigurazioneAggiungi ogni nuova chiave pubblica a ogni serverCopi un file su ogni dispositivo
Dispositivo perso o vendutoTogli una riga su ogni serverNuova chiave su ogni dispositivo e ogni server
Log del serverMostrano quale dispositivo è entratoTutti gli accessi sembrano uguali
Chiavi hardware e telefoniFunzionano, perché la chiave non deve mai spostarsiImpossibile quando la chiave non si può esportare

Una chiave per dispositivo è la scelta più sicura di base, ed è quella che usa la maggior parte dei team. Copiare ha senso con pochi dispositivi che controlli del tutto, quando aggiungere chiavi a molti server è il lavoro più pesante.

Crea una chiave sul nuovo dispositivo

Sul nuovo computer crea una chiave e dalle un commento con il nome del dispositivo:

ssh-keygen -t ed25519 -C "me@desktop"

Accetta il file proposto, ~/.ssh/id_ed25519, e imposta una passphrase. Il commento compare accanto alla chiave in authorized_keys e negli elenchi dei fingerprint, ed è quello che ti permette di togliere la riga giusta più avanti. La guida su come generare una chiave SSH Ed25519 spiega le opzioni.

Aggiungila ai tuoi server

Se il server accetta ancora la password, esegui questo dal nuovo dispositivo:

ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@server

Se l'accesso con password è spento, che è la configurazione migliore, usa un dispositivo che entra già. Portagli il nuovo file .pub (è pubblico, quindi va bene un'email o un messaggio in chat), poi aggiungilo:

ssh deploy@server "cat >> ~/.ssh/authorized_keys" < desktop.pub

Controlla che ci siano entrambe le chiavi, ognuna con il suo commento:

ssh deploy@server "ssh-keygen -lf ~/.ssh/authorized_keys"
256 SHA256:l1AS4F9VRH90JA6uJuQw7/3uRDzrtMafpkeiO7zel84 me@laptop (ED25519)
256 SHA256:LGklWc72FhPwm7in/sLr3pGRujcSZ6a6z4E97qJGkRE me@desktop (ED25519)

Ripeti per ogni server, e aggiungi la chiave a GitHub o GitLab tra le chiavi SSH dell'account se fai push di codice da questo dispositivo. Con molti server, un breve ciclo sull'elenco degli host fa risparmiare tempo. Il formato del file è spiegato in il file authorized_keys spiegato.

Se invece copi la chiave

Copia entrambi i file, id_ed25519 e id_ed25519.pub, su un canale cifrato da un capo all'altro: una chiavetta USB cifrata, AirDrop, o scp tra due macchine tue. Evita email, chat e cartelle condivise, che conservano copie. Poi, sul nuovo dispositivo:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub

Senza questi permessi ssh rifiuta la chiave. Se la chiave non ha una passphrase, aggiungila adesso, visto che ora vive in più posti:

ssh-keygen -p -f ~/.ssh/id_ed25519

Per controllare che chiave privata e chiave pubblica vadano insieme, ricava la parte pubblica da quella privata e confronta:

ssh-keygen -y -f ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub

Le due righe devono iniziare con la stessa chiave. Approfondisci in ricavare la chiave pubblica da quella privata.

Quando perdi o sostituisci un dispositivo

Con una chiave per dispositivo, togli la riga di quel dispositivo su ogni server. Fai una copia del file, cancella in base al commento ed elenca quello che resta:

sed -i.bak '/ me@desktop$/d' ~/.ssh/authorized_keys
ssh-keygen -lf ~/.ssh/authorized_keys

Un commento può essere modificato da chiunque avesse accesso, quindi per un dispositivo rubato cerca per fingerprint, come spiegato in revocare una chiave SSH. Togli la chiave anche da GitHub e servizi simili.

Con una chiave copiata, il dispositivo perso ha la stessa chiave di tutti gli altri. Crea una chiave nuova, installala ovunque, togli la vecchia chiave pubblica da ogni server e servizio, e copia la nuova chiave privata sui dispositivi che hai ancora. Finché non hai finito, a proteggere la vecchia c'è solo la passphrase.

Tieni la configurazione uguale ovunque

Le chiavi private cambiano da un dispositivo all'altro, ma ~/.ssh/config può essere identico, purché ogni dispositivo chiami la sua chiave allo stesso modo:

Host *
    IdentityFile ~/.ssh/id_ed25519
    IdentitiesOnly yes

Host prod
    HostName 203.0.113.10
    User deploy

La configurazione non contiene segreti, quindi può stare in un repository di dotfile o in una cartella sincronizzata. Tieni fuori i file id_* senza .pub. Vedi esempi di file ssh config per i pattern degli host, e un gestore di chiavi SSH con vault cifrato se preferisci tenere chiavi e server insieme.

Domande

Posso copiare la mia chiave privata SSH su un altro computer?

Funziona, e a OpenSSH non importa dove è stata creata una chiave. Il prezzo si paga alla fine: se una copia trapela o perdi un dispositivo, devi sostituire la chiave su ogni server e su ogni dispositivo che la contiene.

Posso mettere la cartella .ssh in Dropbox, iCloud o in un repository di dotfile?

Lì puoi tenere la configurazione e le chiavi pubbliche, mai le chiavi private. Una cartella sincronizzata o la cronologia di Git conservano copie che non riesci a cancellare del tutto.

Quante chiavi può contenere authorized_keys?

Non c'è un limite pratico. Ogni riga è una chiave, e un commento finale come me@laptop le distingue.

Fonti

Altro in Chiavi e accesso

Tutte le guide