为什么要运行这个命令:"gpg-connect-agent updatestartuptty /bye"



我在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-ttypinentry-curses(需要知道它应该监听哪个tty来进行用户交互。

当GPG充当ssh-agent以提供git+ssh身份验证时,它将在启动时保留第一个tty的引用,这与连接到VM时的引用不同。不幸的是,gpg-agent在运行时无法知道您连接到哪个tty,因此每次尝试与启动tty通信时都会失败。这就是为什么您需要使用该命令更新启动tty。他们的文档中简要介绍了这种行为。

避免每次都使用该命令的另一种选择是使用任何不依赖于ttypinentry应用程序,例如pinentry-gtk-2pinentry-gnome等GUI应用程序

最新更新