Sécuriser son accès SSH avec une YubiKey

  • sécurité
  • ssh
  • hardware

Sécuriser son accès SSH avec une YubiKey

La sécurité des accès SSH est cruciale, que ce soit pour administrer un serveur ou se connecter à un dépôt Git. Pourtant, de nombreux utilisateurs commettent encore des erreurs : clés non renouvelées, mots de passe faibles, ou même absence de mot de passe sur la clé privée ! Dans cet article, découvrez comment générer une clé SSH/ECDSA, la lier à une YubiKey, et adopter de bonnes pratiques.

Problèmes courants de sécurité SSH

  • Clés jamais renouvelées : Une clé SSH utilisée pendant des années devient une cible privilégiée.
  • Mots de passe faibles ou absents : Beaucoup n’ajoutent pas de passphrase à leur clé privée, ou choisissent un mot de passe trop simple.
  • Clés stockées sur plusieurs machines : Copier la clé privée sur plusieurs ordinateurs multiplie les risques de fuite.

Bonnes pratiques

  • Toujours protéger sa clé privée par une passphrase forte.
  • Renouveler ses clés régulièrement.
  • Éviter de copier la clé privée : préférez l’usage d’un hardware token comme la YubiKey.

Générer une clé SSH/ECDSA

Pour générer une clé SSH ECDSA :

Générer une clé ECDSA avec passphrase
ssh-keygen -t ecdsa -b 521 -C "[email protected]"

Le prompt vous demandera :

Enter file in which to save the key (/home/user/.ssh/id_ecdsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

Choisissez un mot de passe fort ! N’utilisez jamais de clé sans passphrase.

Utiliser une YubiKey pour SSH

La YubiKey permet de stocker la clé privée sur un support physique, rendant le vol de la clé quasi impossible.

Pré-requis

  • Une YubiKey (modèle compatible OpenPGP ou FIDO2)
  • Les outils ykman et gpg installés

Générer une clé SSH sur la YubiKey (OpenPGP)

  1. Initialisez votre YubiKey :
Terminal window
ykman openpgp reset
  1. Générez une paire de clés sur la YubiKey :
Terminal window
gpg --card-edit
gpg/card> admin
gpg/card> generate

Suivez les instructions : choisissez une passphrase forte pour la clé, et laissez la YubiKey générer la clé privée (elle ne sortira jamais du token).

  1. Exportez la clé publique SSH :
Terminal window
gpg --card-status
gpg --export-ssh-key <votre_email> > ~/.ssh/id_yubikey.pub

Ajoutez cette clé à vos serveurs ou à GitHub/GitLab.

Utiliser une clé FIDO2 (ed25519-sk)

Pour les YubiKey récentes, vous pouvez générer une clé SSH FIDO2 :

Générer une clé SSH FIDO2 sur YubiKey
ssh-keygen -t ed25519-sk -C "[email protected]"

Le prompt vous demandera d’insérer et de toucher la YubiKey.

Exemple de configuration SSH

Ajoutez à votre ~/.ssh/config :

Exemple de configuration SSH
Host mon-serveur
HostName mon-serveur.example.com
User monuser
IdentityFile ~/.ssh/id_yubikey.pub
IdentitiesOnly yes

Prompt SSH typique

$ ssh mon-serveur
Enter PIN for authenticator:
Welcome to Ubuntu 22.04 LTS!

Conclusion

Protéger son accès SSH est indispensable. Utiliser une YubiKey permet de sécuriser la clé privée, d’éviter les mauvaises pratiques (clé copiée, mot de passe faible) et de simplifier la gestion. N’oubliez pas de renouveler vos clés régulièrement et de garder une sauvegarde de secours !

Pour aller plus loin :