On Thu 2019-08-08 23:17:00 -0400, Antoine Beaupré wrote: > So if I could rephrase that bug, I'd say that gpg-agent is > "sticky". Whenever it gets called first is what determines the TTY. If > that TTY is messed up (because it gets called too early in the session), > it's forever doomed and needs to restart or be retold where it is: > > gpg-connect-agent UPDATESTARTUPTTY /bye > > This seems sub-optimal. It's also quite strange it affects only > authentication and not signing: it might be something specific to > gpg-agent's SSH support.
it is. gpg-agent's SSH support uses OpenSSH's ssh-agent protocol, which
has no way of indicating to the agent how/where the prompts should
happen.
gpg-agent's native mechanism uses an entirely different protocol (on a
different socket too). The gpg-agent mechansism *does* provide a way
for the invoking client to tell the agent where the prompting should
happen. This means that when gpg itself talks to gpg-agent, it sets the
DISPLAY, DBUS_SESSION_BUS_ADDRESS, GPG_TTY, etc. options explicitly.
But when ssh talks to what it thinks is the ssh-agent, it provides no
such information.
If you use a graphical environment with a per-user dbus session which is
initialized with the rest of your systemd user session manager, then you
should also use a pinentry that communicates over dbus -- in this case,
gpg-agent should be started with knowledge of the dbus session, and so
the pinentry should automatically know how to communicate with the user.
afaik, pinentry-gnome3 is the only pinentry that communicates over dbus
at the moment.
so, the recommended way of avoiding these problems longer term on a
system with a graphical environment is (as the superuser):
apt install pinentry-gnome3 dbus-user-session
update-alternatives --set pinentry /usr/bin/pinentry-gnome3
and then log out and log back in again.
If that doesn't work for you, i'd definitely like to know about it.
--dkg
signature.asc
Description: PGP signature

