我在vm中有一个arch linux,我导入了我的gpg密钥和配置gpg如下所述:
https://github.com/drduh/YubiKey-Guide
以及配置pass&git使用gpg密钥,一切都很好,例如,当我第一次运行git pull
时,它会问我密码,
问题是:当我重新启动vm时,在我可以运行任何命令(如git pull
(之前,我必须运行以下命令:
gpg-connect-agent updatestartuptty /bye
然后一切正常,
我该如何解决这个问题?
GPG依赖pinentry
为用户提供输入密码的交互,例如保护智能卡的密码。为了正常工作,pinentry
(在终端上是pinentry-tty
或pinentry-curses
(需要知道它应该监听哪个tty来进行用户交互。
当GPG充当ssh-agent
以提供git+ssh身份验证时,它将在启动时保留第一个tty
的引用,这与连接到VM时的引用不同。不幸的是,gpg-agent
在运行时无法知道您连接到哪个tty
,因此每次尝试与启动tty
通信时都会失败。这就是为什么您需要使用该命令更新启动tty。他们的文档中简要介绍了这种行为。
避免每次都使用该命令的另一种选择是使用任何不依赖于tty
的pinentry
应用程序,例如pinentry-gtk-2
、pinentry-gnome
等GUI应用程序