SSH#

This guide explains how to prepare your SSH server and client for use with the Nitrokey. For configuring PuTTY, see this guide:

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.