gpg-agent refuse les clés SSH avec ssh-add signalant «opération refusée par l'agent»

12

J'utilise openssh7.5p1 et gnupg 2.1.21 sur arch linux (ce sont les versions par défaut fournies avec arch). Je voudrais utiliser gpg-agentcomme agent ssh. Je mets ce qui suit dans mon ~/.gnupg/gpg-agent.conf:

pinentry-program /usr/bin/pinentry-qt
enable-ssh-support

Arch démarre automatiquement un gpg-agent à partir de systemd, donc je mets

export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/gnupg/S.gpg-agent.ssh"

Lorsque je cours ssh-add -l, il ne signale aucune identité et pssignale un gpg-agent --supervisedprocessus comme je m'y attendais.

Malheureusement, lorsque je cours ssh-add, quel que soit le type de clé, cela ne fonctionne pas. Voici un exemple de la façon dont j'ai essayé dsa:

$ ssh-keygen -f testkey -t dsa -N ''
Generating public/private dsa key pair.
Your identification has been saved in testkey.
Your public key has been saved in testkey.pub.
$ ssh-add testkey
Could not add identity "testkey": agent refused operation

Toutes les autres fonctions gpg fonctionnent correctement (cryptage / décryptage / signature). De plus, les clés que je génère fonctionnent correctement si je les utilise directement avec ssh, et elles fonctionnent correctement si ssh-agentj'exécute le logiciel fourni avec openssh.

La documentation indique que cela ssh-adddevrait ajouter des clés ~/.gnupg/sshcontrol, mais évidemment rien ne se passe.

Ma question: quel est le moyen le plus simple de charger une clé générée par openssh ssh-keygendans gpg-agent, et quelqu'un peut-il couper et coller une session de terminal montrant comment cela fonctionne?

user3188445
la source
La réponse acceptée m'a aidé, merci d'avoir soulevé cette question. Cela m'arrive de temps en temps, y a-t-il une solution permanente?
gf_

Réponses:

27

La réponse était apparemment de courir:

echo UPDATESTARTUPTTY | gpg-connect-agent

Je ne sais pas pourquoi le programme Pinentry a bien fonctionné pour d'autres utilisations telles que le décryptage de fichiers, mais n'a pas fonctionné ssh-add.

Bien que cela fonctionne maintenant, il crée également une copie de la clé privée ssh qui n'apparaît pas sous gpg -Kv, et ne semble pas non plus vous permettre de modifier la phrase secrète de votre clé privée (puisque vous ne pouvez pas la modifier avec --edit-key) . Fondamentalement, je suis assez mécontent de la façon dont la gpg-agentvisibilité est faible sur l'endroit où vos secrets sont copiés. Si vous avez posé cette question parce que vous espériez gpg-agentêtre une meilleure alternative ssh-agent, alors je vous encourage à vous y tenir au ssh-agentlieu d'essayer ma réponse. La principale raison de préférer gpg-agentest si vous en avez besoin pour utiliser une carte à puce.

user3188445
la source
Où avez-vous trouvé cette réponse? Ça marche super!
CMCDragonkai
Merci pour cela, a fonctionné pour moi. Exécutez-vous cela régulièrement? À chaque démarrage / connexion? Une idée concernant une solution «correcte»?
gf_
2

Dans mon cas, le problème était le programme de pinentry utilisé. J'utilisais des pinentry-emacs. Il semble qu'il ne gère pas l'invite de fenêtre de saisie de champ de texte double qui se ssh-adddéclenche lorsqu'il est utilisé avec gpg-agent.

La suppression de pinentry-emacs et l'installation du pinentry GTK ont résolu le problème ici.

user30747
la source
Cela a finalement résolu mon problème après avoir trouvé un tas de sources qui m'ont dit de mettre à jour le tty de démarrage.
William Rosenbloom