YubiKey para SSH y GitHub: la guía técnica para developers
Guides et Tutoriels

YubiKey pour SSH et GitHub : le guide technique pour les développeurs

Ta clé SSH privée vit dans un fichier texte brut dans ~/.ssh/. Si quelqu'un accède à ton ordinateur portable ou l'infecte avec un malware, il peut la copier en quelques secondes. Il n'a besoin ni de ton mot de passe ni de ton empreinte.

Une YubiKey change cela. La clé privée ne quitte jamais le matériel — même toi tu ne peux pas l'exporter. Sans la clé physique dans le port USB ou près de la NFC, aucune authentification n'est possible.

Ce que tu vas configurer dans ce guide
  • Une clé SSH soutenue par du matériel FIDO2
  • Signature des commits Git avec cette même clé
  • YubiKey comme clé de sécurité sur GitHub (2FA)

Pourquoi le modèle de menace change

Une clé SSH normale est un fichier. Elle peut être copiée, divulguée dans une sauvegarde mal configurée ou volée par un malware qui lit le disque.

Une clé SSH soutenue par YubiKey (-sk, pour « security key ») est générée à l'intérieur de la puce FIDO2. Le système ne conserve qu'une référence. Sans la clé physique connectée, cette référence ne sert à rien.

De plus, tu peux exiger une vérification tactile à chaque utilisation. Même si quelqu'un a accès à distance à ta machine, il devrait toucher physiquement la YubiKey pour s'authentifier.


Générer une clé SSH soutenue par YubiKey

Tu as besoin d'OpenSSH 8.2 ou supérieur. C'est inclus dans macOS et dans la plupart des distributions Linux modernes. Sous Windows, utilise le client OpenSSH intégré ou WSL.

1
Génère la clé résident

Exécute ssh-keygen -t ed25519-sk -O resident -O verify-required -C "ton-email@domaine.com". L'option resident stocke la clé également dans la YubiKey, pas seulement sur ton disque.

2
Confirme avec PIN et toucher

Le terminal te demandera le PIN de la YubiKey puis de toucher le capteur. C'est ainsi que la paire de clés est générée à l'intérieur de la puce.

3
Copie la clé publique

id_ed25519_sk.pub est généré dans ~/.ssh/. C'est celle que tu ajoutes à GitHub, GitLab ou au authorized_keys de ton serveur.

4
Teste la connexion

Connecte-toi par SSH comme d'habitude. Le système te demandera de toucher la YubiKey avant de s'authentifier.

Si tu changes d'ordinateur portable

Avec -O resident tu peux récupérer la clé depuis la YubiKey elle-même sur un nouvel équipement, avec ssh-keygen -K. Tu n'as pas besoin de la régénérer à partir de zéro.


Signer tes commits Git avec la même clé

Depuis Git 2.34 tu peux signer les commits en utilisant une clé SSH au lieu de GPG. C'est la même YubiKey, sans configurer un deuxième système de signature.

1
Active le format SSH pour les signatures

Exécute git config --global gpg.format ssh.

2
Indique quelle clé utiliser pour signer

Exécute git config --global user.signingkey ~/.ssh/id_ed25519_sk.pub.

3
Active la signature automatique

Exécute git config --global commit.gpgsign true. Chaque commit demandera de toucher la YubiKey.

4
Enregistre la clé en tant que « Signing Key » sur GitHub

Dans Settings → SSH and GPG keys → New SSH key, télécharge la même clé publique mais en tant que type Signing Key, pas Authentication Key.

À partir de là, tes commits apparaissent comme Verified sur GitHub. N'importe qui peut vérifier qu'ils proviennent de ta clé physique, pas seulement de ton nom d'utilisateur.


Activer la YubiKey comme 2FA sur GitHub

1
Va dans Security keys

Settings → Password and authentication → Security keys → Add.

2
Connecte ou rapproche la YubiKey

Via USB ou NFC, selon le modèle. GitHub la détecte en tant que clé WebAuthn/FIDO2.

3
Touche le capteur quand demandé

Confirme l'enregistrement. À partir de maintenant, la connexion demandera la clé physique, pas un code temporaire.

Enregistre deux clés de sécurité sur GitHub

GitHub te permet d'ajouter plusieurs clés comme méthode de 2FA. Enregistre une clé principale et une de secours dès le premier jour.


Modèles YubiKey compatibles pour ce flux

Modèle Connecteur 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 ✓ ✓

Les quatre modèles utilisent le protocole FIDO2 pour générer des clés -sk, donc le flux SSH et le 2FA sur GitHub fonctionnent de la même manière sur tous. La différence réside dans le port physique de ton équipement.


Comment organiser ta clé principale et ta clé de secours

Si tu perds ta seule YubiKey, tu perds l'accès à SSH, à tes commits signés et à la connexion GitHub. Enregistre toujours une deuxième clé et garde-la dans un endroit différent de la principale.

Recommandé Porte-cartes pour YubiKey 2 emplacements

Porte-cartes 2 Emplacements

Porte ta clé principale et ta clé de secours ensemble, au format carte de crédit. Fabriqué en Espagne (UE).

Compatible avec : YubiKey 5 NFC · 5C NFC · Security Key NFC · Security Key C NFC
Voir sur Amazon
Porte-clés avec lanyard pour YubiKey

Porte-clés avec Lanyard

Pour la clé que tu utilises quotidiennement. La NFC fonctionne sans la sortir de son étui. Fabriqué en Espagne (UE).

Compatible avec : YubiKey 5 NFC · 5C NFC · Security Key NFC · Security Key C NFC
Voir sur Amazon

Questions fréquemment posées

Ai-je vraiment besoin de deux YubiKeys ?

Ce n'est pas obligatoire, mais c'est vivement recommandé. Sans une clé de secours enregistrée, une défaillance ou une perte te laisse sans accès à SSH et à ton compte GitHub jusqu'à ce que tu utilises une autre méthode de récupération.

Cela fonctionne-t-il de la même façon sous Windows, macOS et Linux ?

Oui, tant que tu as OpenSSH 8.2 ou supérieur. macOS et les distributions Linux récentes l'incluent par défaut. Sous Windows, utilise le client OpenSSH du système ou WSL.

Puis-je utiliser la même YubiKey pour SSH et pour mon Gmail ?

Oui. Une même YubiKey supporte plusieurs identifiants FIDO2, un pour chaque service où tu l'enregistres — SSH, GitHub, Gmail et autres comptes compatibles WebAuthn.

Que se passe-t-il si je perds la YubiKey que j'ai utilisée pour signer mes commits ?

Les commits déjà signés restent valides. Pour continuer à signer, enregistre la clé de secours en tant que nouvelle Signing Key sur GitHub et mets à jour user.signingkey dans ta configuration Git.

Verdict

Vaut-il la peine de migrer SSH et GitHub vers YubiKey ?

Si tu travailles avec accès SSH aux serveurs de production ou si tu maintiens des dépôts avec des collaborateurs, oui. La clé privée cesse d'être un fichier copiable et dépend désormais du matériel physique.

Le vrai coût n'est pas celui de la clé, mais celui de ne pas avoir de clé de secours organisée. Résous cela dès le premier jour.

En tant que partenaire Amazon, je perçois une rémunération sur les achats éligibles.

Retour au blog