Using a proper pinentry remotely when running X
The application pinentry opens when you need to provide your password for
decrypting your GnuPG key. You can install different interfaces for providing
the password via pinentry. There are graphical and non-graphical variants
e.g.,
$ dpkg -l | grep pinentry
pinentry-curses
pinentry-gnome3
pinentry-gtk2
pinentry-tty
It makes sense to open a graphical interface when pinentry is called by a
graphical program (e.g., when encrypting an email composed in Thunderbird) and
a non-graphical interface when pinentry is called by a non-graphical program
(e.g., when signing a commit through git commit). That said, this is not
default behaviour.
update-alternatives --config pinentry
shows the current variant used when calling pinentry. On newer systems this
is pinentry-gnome3, which seems fine but has one caveat: it will always run a
graphical interface if a X session is running. This is quite
problematic when connecting to a machine that has a X session running
remotely. This is indeed an issue with pinentry-gnome3 and can be avoided by
using pinentry-gtk2 instead.