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

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.