pinentry 未显示在 tmux 中

pinentry 未显示在 tmux 中

我在使用 Yubikey Neo gpg(实际上passgpg在后台使用)时遇到了一些麻烦。tmux当尝试使用解密文件或签署某些内容时,gpg我得到以下信息:

$ gpg -d test.gpg            
gpg: sending command `SCD PKDECRYPT' to agent failed: ec=5.99
gpg: public key decryption failed: general error
gpg: decryption failed: secret key not available

这仅在 的内部,如果我尝试直接tmux在正常会话中运行相同的命令,它就会起作用:zshgnome-terminal

gpg -d test.gpg 
helloworld

pinentry会弹出,要求我输入 PIN 码来解锁 Yubikey 并继续解密文件。

我想我将问题范围缩小到pinentry无法生成。设置日志级别gpg-agent我得到以下信息:

gpg-agent[906]: DBG: chan_6 <- INQUIRE NEEDPIN ||Please enter the PIN
gpg-agent[906]: starting a new PIN Entry
gpg-agent[906]: DBG: chan_7 <- OK Pleased to meet you, process 906
gpg-agent[906]: DBG: connection to PIN entry established
... options removed ...
gpg-agent[906]: DBG: chan_7 -> GETINFO pid
gpg-agent[906]: DBG: chan_7 <- D 13381
gpg-agent[906]: DBG: chan_7 <- OK
gpg-agent[906]: DBG: chan_7 -> SETKEYINFO --clear
gpg-agent[906]: DBG: chan_7 <- OK
gpg-agent[906]: DBG: chan_7 -> SETDESC Please enter the PIN
gpg-agent[906]: DBG: chan_7 <- OK
gpg-agent[906]: DBG: chan_7 -> SETPROMPT PIN
gpg-agent[906]: DBG: chan_7 <- OK
gpg-agent[906]: DBG: chan_7 -> [[Confidential data not shown]]
gpg-agent[906]: DBG: chan_7 <- [[Confidential data not shown]]
gpg-agent[906]: DBG: error calling pinentry: Operation cancelled <Pinentry>
gpg-agent[906]: DBG: chan_7 -> BYE
gpg-agent[906]: DBG: chan_6 -> CAN
gpg-agent[906]: DBG: chan_6 <- ERR 100663573 IPC call has been cancelled <SCD>
gpg-agent[906]: DBG: chan_5 -> ERR 83886179 Operation cancelled <Pinentry>

除了一些OPTION显然没有被处理的语句之外,我没有发现任何可疑的地方,pinentry但在从 调用时我得到了相同的结果gnome-terminal

设置$DISPLAY变量也没有帮助,错误是相同的。

我错过了什么吗?我还需要设置其他变量吗?pinentry-ncurses如果它无法打开图形界面,为什么不会出现这种情况呢?

答案1

问题是(出于某种原因)gpg尝试使用 dbus 但tmux环境变量DBUS_SESSION_BUS_ADDRESS已过时。

这可以通过以下方法修复

set-option -g update-environment 'DBUS_SESSION_BUS_ADDRESS'

.tmux.conf

相关内容