使用 gpg-agent 临时更改 pinentry 程序

使用 gpg-agent 临时更改 pinentry 程序

我有时会在没有 X 显示或通过 ssh 的情况下使用 gpg-agent,因此我的配置文件包含:

pinentry-program /usr/bin/pinentry-curses

这样,curses 中就会请求 gpg 密码。

也就是说,在某些图形脚本中,我希望改用 GTK pinentry。如何调用 gpg 并暂时使用不同的 pinentry?

答案1

您可以使用PINENTRY_USER_DATA环境变量来提供gpg要传递给 pinentry 命令的信息。然后,您需要设置pinentry-program为自定义包装器,例如将根据该变量运行curses 或GTK pinentry。

请注意,这似乎仅适用于 GPG 2.x,与 GPG 1.x 的文档所述相反。

所以与那个脚本,你用来gpg2使用pinentry-cursesPINENTRY_USER_DATA="gtk" gpg2使用pinentry-gtk-2

答案2

看着man pinentry-gnome3,我看到了这个:

   pinentry-gnome3  implements  a PIN entry dialog based on GNOME 3, which
   aims to follow the GNOME Human Interface Guidelines as closely as  pos‐
   sible.   If the X Window System is not active then an alternative text-
   mode dialog will be used.  There are other flavors that  implement  PIN
   entry dialogs using other tool kits.

不幸的是,这种文本模式后备对我不起作用。看来其他人也有相同的 问题。然而,这条评论促使我尝试不同的 GUI 密码输入程序:pinentry-gtk2。你可以这样切换:

> sudo update-alternatives --config pinentry
There are 3 choices for the alternative pinentry (providing /usr/bin/pinentry).

  Selection    Path                      Priority   Status
------------------------------------------------------------
* 0            /usr/bin/pinentry-gnome3   90        auto mode
  1            /usr/bin/pinentry-curses   50        manual mode
  2            /usr/bin/pinentry-gnome3   90        manual mode
  3            /usr/bin/pinentry-gtk-2    85        manual mode

Press <enter> to keep the current choice[*], or type selection number: 3
update-alternatives: using /usr/bin/pinentry-gtk-2 to provide /usr/bin/pinentry (pinentry) in manual mode

一旦我切换,它对我来说非常有效!在桌面上的终端中,它将使用 GUI 密码输入,但当我通过 ssh 进入我的计算机时,它将使用文本模式密码输入。

相关内容