
Kio
@kio.sh
Ingénieur logiciel et concepteur UI/UX amateur basé à Toronto, Canada
Dernièrement écouté
White Shirt
Nina Chuba — White Shirt - Single
29 novembre 2021
8 minute de lecture
2,9 k vues
Utiliser une clé Yubikey pour l'authentification SSH sur macOS/Linux
Comment authentifier les connexions SSH à l'aide de l'emplacement d'authentification de votre Yubikey, sous Linux et MacOS.
La configuration d'une Yubikey pour l'authentification SSH peut être un peu délicate, et j'ai constaté que de nombreux guides existants manquaient, j'ai donc décidé d'écrire le mien pour faciliter la tâche des autres qui tentent cela.
D'après mes recherches, la plupart des guides se concentrent sur l'utilisation de l'emplacement pour carte à puce pour GPG. Mais honnêtement, c'est excessif et peut être un peu compliqué. Heureusement, avec agent yubikey , nous pouvons utiliser l'emplacement d'authentification (9a) et garder l'emplacement de la carte à puce ouvert pour d'autres utilisations.
Installation
Linux
yubikey-manager
peut être utilisé comme une AppImage à partir de Site Web de Yubikey ou installé depuis votre gestionnaire de paquets.
- Sur Arch Linux, il est disponible sous le nom yubikey-manager-qt ; yubikey-manager pour la version CLI (
paru/yay -S yubikey-manager-qt
). - Sur Ubuntu, il est également disponible sous le nom yubikey-manager-qt ; yubikey-manager pour la version CLI (
sudo apt-get install yubikey-manager-qt
).
Après l'installation, pcscd.service
doit être activé et démarré : sudo systemctl enable pcscd.service --now
.
yubikey-manager
peut être trouvé sous le nom ykman-gui
; ykman
pour la version CLI.
yubikey-agent
peut être installé en utilisant le yubikey-agent paquet de l'AUR, ou sur d'autres distributions, peut être installé manuellement .
Après l'installation, il doit être activé et démarré : systemctl daemon-reload --user && systemctl --user enable yubikey-agent.service --now
.
macOS
yubikey-manager
peut être téléchargé et installé à partir de Site Web de Yubikey .
yubikey-agent
peut être installé en utilisant Homebrew : brew install yubikey-agent
. Après l'installation, il doit être activé en utilisant brew services start yubikey-agent
.
Mesures
Générer une nouvelle clé
Ici, vous pouvez choisir soit yubikey-agent -setup
, ou, utiliser yubikey-manager
pour générer une clé. J'ai choisi la deuxième option et je la recommande, car yubikey-agent
c'est plus simple, cela ne donne aucun contrôle sur le type ou la longueur de la clé générée.
Utilisation de yubikey-agent*
Pour générer une nouvelle clé avec yubikey-agent et la stocker dans l'emplacement d'authentification PIV de votre Yubikey, exécutez simplement yubikey-agent -setup
avec votre Yubikey connecté et suivez les étapes.
Il vous sera demandé de définir un code PIN et de recevoir votre clé publique une fois le processus terminé.
Il est important de noter que yubikey-agent -setup génère une clé de gestion aléatoire et la stocke dans des métadonnées protégées par code PIN, ce qui rend difficile l'utilisation d'autres emplacements PIV sans quelques solutions de contournement de type hack-y 1 .
Utilisation de Yubikey-Manager
Pour générer une nouvelle clé à l'aide de yubikey-manager
Pour installer le logiciel, accédez à l'onglet « Applications > PIV » et assurez-vous que l'option « Authentification » est sélectionnée. Si un certificat est déjà présent, s'assurer ce n'est pas important et n'est pas utilisé. L'écrasement de l'emplacement est pas réversible.
Cliquez sur « Générer », sélectionnez le type de clé que vous souhaitez générer (la valeur par défaut devrait convenir si vous n'êtes pas sûr), nommez-la « Clé SSH » et définissez la date d'expiration.
Si tout semble correct, enregistrez et saisissez le code PIN pour confirmer. Si vous n'en avez pas encore défini, le code par défaut est 123456
- Il faudrait remplacer ce code par un code plus sécurisé, ainsi que le code PUK et la clé de gestion. Sauvegardez-les hors ligne et en lieu sûr.
Configurez votre shell
Ensuite, vous devrez configurer votre shell pour définir le SSH_AUTH_SOCK
variable d'environnement au lancement.
Commencez par localiser le socket yubikey-agent. Vous pouvez consulter la sortie de ps aux | grep yubikey-agent
Si vous n'êtes pas sûr. Pour moi, sous Linux, son emplacement était /run/user/{Your UID}/yubikey-agent/yubikey-agent.sock
par défaut.
Poisson
Ouvrez votre configuration et ajoutez set -gx SSH_AUTH_SOCK "/run/user/{Your UID}/yubikey-agent/yubikey-agent.sock"
, où le chemin est l'emplacement du socket yubikey-agent.
Bash / ZSH / SH
Ouvrez votre configuration et ajoutez export SSH_AUTH_SOCK="/run/user/{Your UID}/yubikey-agent/yubikey-agent.sock"
, où le chemin est l'emplacement du socket yubikey-agent.
Dépendances supplémentaires
Enfin, pour pouvoir utiliser la clé privée, vous devez d'abord vous authentifier avec votre code PIN. Si vous utilisez une distribution comme Ubuntu, cela devrait fonctionner immédiatement, mais si vous utilisez une installation personnalisée ou plus minimaliste, vous devrez peut-être d'abord installer un trousseau de clés et un agent Polkit compatibles. Je préfère l'agent Polkit de GNOME, car il affiche des fenêtres modales élégantes et fonctionne avec archlinux-keychain, mais n'importe quel agent devrait fonctionner.
Plus
Et voilà ! Vous devriez maintenant avoir une clé SSH entièrement configurée et fonctionnelle dans l'emplacement d'authentification de votre Yubikey.
- Pour imprimer la clé publique et tester la configuration, exécutez
ssh-add -L
.- Si vous ne voyez aucune identité ou obtenez une erreur, vérifiez que tous les services requis sont installés et en cours d'exécution et que vous avez correctement configuré la variable d'environnement SSH_AUTH_SOCK de votre shell.
- Si vous n'utilisez pas l'indicateur '-setup' avec
yubikey-agent
, s'assurer vous définissez un code PIN, un PUK et une clé de gestion sécurisés et les stockez dans un endroit sûr et hors ligne. - Si vous rencontrez des problèmes lors de l'utilisation de la Yubikey pour d'autres fonctionnalités après l'avoir utilisée avec yubikey-agent, j'ai trouvé soit le débrancher et le rebrancher, soit envoyer un SIGHUP au
yubikey-agent
le processus résout ce problème.
Notes de bas de page
See yubikey-agent's manual setup instructions