YubiKey per SSH e GitHub: la guida tecnica per developer
La tua chiave SSH privata vive in un file di testo semplice in ~/.ssh/. Se qualcuno accede al tuo laptop o lo infetta con malware, può copiarla in secondi. Non ha bisogno della tua password né della tua impronta.
Una YubiKey cambia tutto. La chiave privata non esce mai dall'hardware — nemmeno tu puoi esportarla. Senza la chiave fisica nella porta USB o vicino all'NFC, non c'è autenticazione possibile.
- Una chiave SSH supportata da hardware FIDO2
- Firma dei commit di Git con quella stessa chiave
- YubiKey come chiave di sicurezza su GitHub (2FA)
Perché cambia il modello di minaccia
Una normale chiave SSH è un file. Si può copiare, perdere in un backup mal configurato o rubare con malware che legge il disco.
Una chiave SSH supportata da YubiKey (-sk, da "security key") si genera dentro il chip FIDO2. Il sistema salva solo un riferimento. Senza la chiave fisica collegata, quel riferimento non serve a nulla.
Inoltre, puoi richiedere la verifica tattile a ogni utilizzo. Anche se qualcuno ha accesso remoto alla tua macchina, avrebbe bisogno di toccare fisicamente la YubiKey per autenticarsi.
Generare una chiave SSH supportata da YubiKey
Ti serve OpenSSH 8.2 o superiore. È incluso in macOS e nella maggior parte delle distribuzioni Linux moderne. Su Windows, usa il client OpenSSH integrato o WSL.
Esegui ssh-keygen -t ed25519-sk -O resident -O verify-required -C "tua-email@dominio.com". L'opzione resident salva la chiave anche nella YubiKey, non solo sul tuo disco.
Il terminale ti chiederà il PIN della YubiKey e poi di toccare il sensore. Così si genera la coppia di chiavi dentro il chip.
Si genera id_ed25519_sk.pub in ~/.ssh/. Quella è quella che aggiungi a GitHub, GitLab o al authorized_keys del tuo server.
Connettiti via SSH come sempre. Il sistema ti chiederà di toccare la YubiKey prima di autenticarti.
Con -O resident puoi recuperare la chiave dalla stessa YubiKey su un nuovo computer, con ssh-keygen -K. Non hai bisogno di rigenerarla da zero.
Firma i tuoi commit di Git con la stessa chiave
Da Git 2.34 puoi firmare i commit usando una chiave SSH al posto di GPG. È la stessa YubiKey, senza configurare un secondo sistema di firma.
Esegui git config --global gpg.format ssh.
Esegui git config --global user.signingkey ~/.ssh/id_ed25519_sk.pub.
Esegui git config --global commit.gpgsign true. Ogni commit chiederà di toccare la YubiKey.
In Settings → SSH and GPG keys → New SSH key, carica la stessa chiave pubblica ma come tipo Signing Key, non Authentication Key.
Da qui in poi, i tuoi commit appaiono come Verified su GitHub. Chiunque può verificare che provengono dalla tua chiave fisica, non solo dal tuo nome utente.
Attiva YubiKey come 2FA su GitHub
Settings → Password and authentication → Security keys → Add.
Via USB o NFC, a seconda del modello. GitHub la rileva come chiave WebAuthn/FIDO2.
Conferma la registrazione. Da ora in poi, il login richiederà la chiave fisica, non un codice temporaneo.
GitHub consente di aggiungere più chiavi come metodo 2FA. Registra una principale e una di backup dal primo giorno.
Modelli YubiKey compatibili per questo flusso
| Modello | Connettore | SSH (FIDO2) | 2FA GitHub |
|---|---|---|---|
| YubiKey 5 NFC | USB-A + NFC | ✓ | ✓ |
| YubiKey 5C NFC | USB-C + NFC | ✓ | ✓ |
| Security Key NFC | USB-A + NFC | ✓ | ✓ |
| Security Key C NFC | USB-C + NFC | ✓ | ✓ |
Tutti e quattro i modelli utilizzano il protocollo FIDO2 per generare chiavi -sk, quindi il flusso di SSH e 2FA su GitHub funziona allo stesso modo su tutti. La differenza sta nella porta fisica del tuo computer.
Come organizzare la tua chiave principale e il tuo backup
Se perdi la tua unica YubiKey, perdi accesso a SSH, ai tuoi commit firmati e al login di GitHub. Registra sempre una seconda chiave e conservala in un posto diverso da quella principale.
Portafoglio Carta 2 Slot
Porta la tua chiave principale e il tuo backup insieme, in formato carta di credito. Prodotto in Spagna (UE).
Portachiavi con Lanyard
Per la chiave che usi ogni giorno. NFC funziona senza toglierla dalla custodia. Prodotto in Spagna (UE).
Domande frequenti
Mi servono due YubiKey sì o sì?
Non è obbligatorio, ma consigliato. Senza una chiave di backup registrata, un guasto o una perdita ti lascia senza accesso a SSH e al tuo account GitHub finché non usi un altro metodo di recupero.
Funziona allo stesso modo su Windows, macOS e Linux?
Sì, a condizione che tu abbia OpenSSH 8.2 o superiore. macOS e le distribuzioni Linux recenti lo includono per impostazione predefinita. Su Windows, usa il client OpenSSH del sistema o WSL.
Posso usare la stessa YubiKey per SSH e per il mio Gmail?
Sì. Una stessa YubiKey supporta più credenziali FIDO2, una per ogni servizio dove la registri — SSH, GitHub, Gmail e altri account compatibili con WebAuthn.
Cosa succede se perdo la YubiKey che ho usato per firmare i commit?
I commit già firmati rimangono validi. Per continuare a firmare, registra la chiave di backup come nuova Signing Key su GitHub e aggiorna user.signingkey nella tua configurazione di Git.
Vale la pena migrare SSH e GitHub a YubiKey?
Se lavori con accesso SSH a server di produzione o mantieni repository con collaboratori, sì. La chiave privata smette di essere un file copiabile e dipende da hardware fisico.
Il vero costo non è della chiave, ma di non avere una di backup organizzata. Risolvilo dal primo giorno.
In qualità di Affiliato Amazon, guadagno dagli acquisti idonei.