SSH & Yubikey

SSH & Yubikey

Deux types de clefs existent :

  • resident
  • partagée

Resident

La clef au format resident est stockée uniquement dans la yubikey. Cet usage peut être pratique pour se connecter sur un nouveau pc par exemple, il n'est pas nécessaire de copier de fichiers de clefs, seul la clef physique suffit.

Partagée

Le type de clef partagée est composée de la clef physique, type YubiKey, et d'un fichier de clef privée. Ce fichier, tout seul, ne permet par l'authentification, ni même la YubiKey individuellement.

Seule l'utilisation conjointe du fichier et de la clef physique permet de se connecter au serveur SSH distant.

Génération d'une clef résidente

Pour générer une clef de type resident, taper la commande suivante

ssh-keygen -t ed25519-sk -O resident -O application=ssh:principal -f ~/.ssh/yubikey_principal
  • -t ed25519-sk indique le format de clef basée sur les courbes elliptiques
  • -O resident cette option permet de choisir le type de clef
  • -f ~/.ssh/yubikey_principal définit le fichier de clef privée associé à la clef résidente
  • -O application=ssh:XXXX il est possible d'enregistrer jusqu'à 25 clefs résidentes dans la clef physique. Cette option permet de nommer chacune d'entre elle.

⚠️ Attention si vous ne définissez pas l'option application=ssh:XXXX vous allez créer une clef qui aura simplement le nom ssh: et vous risquez d'écraser par mégarde votre clef résidente si vous réexécuter la commande sans préciser le nom de l'application. Il est donc conseillé d'utiliser toujours un nom d'application qui ait du sens.

ℹ️ Si la clef est résidente, vous pouvez supprimer les deux fichiers ~/.ssh/yubikey_principal et ~/.ssh/yubikey_principal.pub, ces deux fichiers peuvent être générer avec les commandes ci-dessous.

une option -O user=username permet également de dériver la clef avec un user défini, par défaut, le champ est vide. Il est ainsi possible de générer plusieurs tokens pour une même option application=ssh:XXXX.

Cas d'une connexion depuis un nouveau pc

Si vous souhaitez vous connectez depuis un nouveau pc, il suffit d'insérer la clef physique et deux choix s'offrent alors à vous :

  • Soit régénérer les fichiers de clef privée et clef publique dans le répertoire ~/.ssh. Dans le cas où vous souhaitez persister cette définition de vos clefs, lors d'un changement de votre pc principal par exemple. Vous devrez taper le code PIN YubiKey à la génération des fichiers uniquement. Ainsi, il ne sera plus nécessaire d'utiliser le code PIN à chaque utilisation, mais les fichiers ~/.ssh/ ne sont toujours pas suffisant à l'authentification, la clef reste indispensable pour créer la connexion.
ssh-keygen -K
  • Soit ajouter à l'agent ssh la définition de vos clefs Yubikey, uniquement en mémoire, après redémarrage, aucune trace de vos clefs ne resteront. Cela peut-être suffisant pour l'utilisation sur un pc public par exemple, mais cela nécessite de devoir entrer le code PIN à chaque chargement des clefs dans le ssh-agent.
ssh-add -K

Lister les clefs résidentes

Cette fonctionnalité n'est disponible qu'à partir du firmware 5.2.3 avec l'utilitaire ykman.

ykman fido credentials list

Si vous souhaitez supprimer une clef en particulier, dans notre cas, nous supprimons la clef secondaire

ykman fido credentials delete ssh:secondaire

Cas particulier

Vous avez créer 3 clefs ssh:, ssh:principal et ssh:secondaire, vous souhaitez supprimer la clef par défaut ssh: en conservant les deux autres, mais l'utilitaire vous répond alors :

Error: Multiple matches, make the query more specific.

Ajouter les doubles quotes et un espace juste après les :

ykman fido credentials delete "ssh: "