SSH pour l’administration des serveurs#
Ce guide explique comment préparer votre serveur et votre client SSH pour les utiliser avec le Nitrokey.
Les clés PGP doivent déjà être installées sur la Nitrokey et le trousseau de clés GnuPG local doit connaître ces clés.
Préparation sur le client#
Assurez-vous que ~/.gnupg/gpg.conf contient “use-agent” ;
Ajouter le support ssh à gnupg-agent en ajoutant “enable-ssh-support” ; à ~/.gnupg/gpg-agent.conf
Si le fichier n’existe pas encore, vous pouvez simplement le créer.
Ajoutez le code suivant quelque part dans votre ~/.bashrc (pour le shell poisson, regardez ici)
unset SSH_AGENT_PID
if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
fi
Il suffit de redémarrer votre système ou d’essayer
pkill gpg-agent
et d’ouvrir une nouvelle ligne de commande pour s’assurer que tout est paramétréEn cas de problème, essayez
gpg2 --card-status
lors de la première utilisation pour vous assurer que l’agent gpg est lancé.
Préparation du serveur#
Vous pouvez générer un fichier authorized_keys en exécutant soit
gpg2 --export-ssh-key keyID >> ~/authorized_keys
où
keyID
est l’identifiant de la sous-clé utilisée pour l’authentification sur votre Nitrokey. La Nitrokey doit déjà être connue du trousseau de clés GnuPG local. Vous pouvez maintenant ajouter ce fichier aux authorized_keys d’un serveur distant et lorsque vous vous connecterez au serveur par ssh, on vous demandera un pin plutôt qu’une phrase de passe.
Dépannage#
Si l’on vous demande toujours un mot de passe, assurez-vous que
echo $SSH_AUTH_SOCK
renvoie quelque chose comme “/run/user/1000/gnupg/S.gpg-agent.ssh” ; ou “/home/nom d’utilisateur/.gnupg/.S.gpg-agent.ssh” ;. Malheureusement, il y a eu quelques changements dans GnuPG dans le passé, de sorte que le contenu réel peut différer selon le système et la version de GnuPG. Sur certains systèmes, il peut même y avoir plusieurs dossiers dans cette variable enregistrée. Vous devez adapter le code ci-dessus dans .bashrc afin que la variable SSH_AUTH_SOCK soit correcte. En cas de doute, recherchez “SSH_AUTH_SOCK” ; dans le fichier
man gpg-agent
pour trouver le code réel pour votre version/système.
Vous pouvez vérifier si vous avez un programme “pinentry” ; installé via votre gestionnaire de paquets. Vous devrez peut-être le définir dans le fichier gpg-agent.conf également. Vous pouvez avoir besoin de pointer gpg-agent vers le bon TTY.