1 votes

Comment démarrer correctement gpg-agent sur Ubuntu 16.04

J'ai un Yubikey4 chargé avec ma clé gpg, agissant comme une carte à puce. Je peux faire gpg2 card-status et cela me donne tout ce dont j'ai besoin en montrant toutes mes sous-clés et tout va bien.

J'ai ensuite voulu utiliser gpg-agent pour me connecter en ssh sur des hôtes distants en utilisant ma clé gpg. J'ai ajouté ce qui suit à mon ~/.gnupg/gpg-agent.conf

enable-ssh-support
pinentry-program /usr/bin/pinentry-curses
default-cache-ttl 60

J'ai également défini le SSH_AUTH_SOCK dans mon fichier .bashrc de cette manière:

export SSH_AUTH_SOCK=~/.gnupg/S.gpg-agent.ssh

Si je redémarre ensuite ma machine, la clé est ajoutée et visible avec ssh-add -l

4096 SHA256....... cardno: ..... (RSA)

Mais toutes les tentatives de connexion ssh vers un serveur distant restent bloquées, ssh -vvv me dit que la machine essaie de signer et d'envoyer la clé, mais l'agent refuse l'opération.

Si j'exécute ensuite un script que j'ai créé en combinant diverses sources, tout fonctionne.

   killall gpg
   export SSH_AUTH_SOCK=~/.gnupg/S.gpg-agent.ssh; gpg-agent --daemon --keep-tty --use-standard-socket --pinentry-program=/usr/bin/pinentry-curses 

J'ai essayé de mettre cela en œuvre en utilisant bashrc, en l'exécutant avec mon gestionnaire de bureau et une tâche système utilisateur sans succès.

Est-ce que quelqu'un pourrait m'aider à comprendre comment démarrer cela automatiquement à la connexion, sans avoir besoin d'exécuter "mon script"?

1voto

harrymc Points 394411

Réponse courte :

Exécutez en tant que root :

$ echo enable-ssh-support >> ~/.gnupg/gpg-agent.conf
# editor /etc/X11/Xsession.options
    ... commenter "use-ssh-agent" ...
# aptitude purge libpam-gnome-keyring

Déconnectez-vous de votre session de bureau puis reconnectez-vous, et vérifiez que $SSH_AUTH_SOCK pointe vers votre agent gpg.

Explication :

Par défaut, le gpg-agent n'active pas son agent SSH. Cela se fait en ajoutant --enable-ssh-support en ligne de commande ou en ajoutant une ligne à un fichier de configuration comme ci-dessus.

Ensuite, le problème des autres agents SSH. L'agent OpenSSH démarre par défaut, configuré par /etc/X11/Xsession.d/90x11-common_ssh-agent provenant du paquet x11-common. Si vous utilisez GNOME, l'agent GNOME Keyring est également en cours d'exécution. Les deux vont interférer avec notre agent GnuPG.

Désactiver l'agent OpenSSH se fait en éditant /etc/X11/Xsession.options comme ci-dessus.

Désactiver l'agent GNOME Keyring est potentiellement un peu plus compliqué. Avec Xfce, on peut désinstaller le paquet libpam-gnome-keyring et s'assurer que Xfce ne démarre pas les services GNOME (Paramètres Session et démarrage Avancé Lancer les services GNOME au démarrage – décochez si coché).

Dépannage

Si malgré tout cela $SSH_AUTH_SOCK ne pointe toujours pas vers votre agent gpg, vous pouvez avoir un autre agent qui interfère encore avec votre agent GnuPG. La variable SSH_AGENT_PID devrait contenir le PID du processus de l'agent, ce qui aidera à identifier cet agent.

Source : My Perfect GnuPG / SSH Agent Setup

0voto

Craig Points 131

Placez le script dans /etc/profile.d. Assurez-vous que vous avez défini le bit exécutable (chmod +x) et que le fichier a une extension .sh.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X