如何让 GPG 在正确的 TTY 上运行 pinentry,而不仅仅是最近打开的 TTY?

如何让 GPG 在正确的 TTY 上运行 pinentry,而不仅仅是最近打开的 TTY?

我已经这样export GPG_TTY=$(tty); gpg-connect-agent updatestartuptty /bye;做了.profile,以便 GPG 知道在运行 pinentry 时要使用哪个 tty。

问题是这导致 pinentry 开始于最近开设的 pty与我想要的相反,我想要的是导致 pinentry 运行的 pty。

有什么解决办法吗?我也将 gpg-agent 作为 ssh-agent 运行。

相关的是,偶尔当我开始一个需要 pinentry 的操作时,什么也没有发生 - pinentry 不会在任何 pty 上运行,即使是最近打开的 pty。

谢谢!

答案1

代理在本地套接字上接受连接。当它接受连接时,它无法确定请求程序连接到哪个 tty,也无法确定它是否连接到 tty。因此它必须根据其他标准选择输入源。

如果您没有看到任何事情发生,那么它可能选择了已关闭或不可用的 tty。

相关内容