Gentoo Linux GPG 正确加密通过参数传递的文件,但在从标准输入读取时抛出“不适合设备的 ioctl”

Gentoo Linux GPG 正确加密通过参数传递的文件,但在从标准输入读取时抛出“不适合设备的 ioctl”

我正在使用内核 4.1.7-hardened-r1 运行 Gentoo Hardened,并且尝试从 SSH 打开的 shell 会话中使用 GPG 来加密文件,并禁用变量,DISPLAY以便使用 pinentry-curses 进行密码提示。使用gpg -o file.gpg --symmetric file我可以很好地加密。使用pv file | gpg -o file.gpg --symmetric我收到以下错误消息:

gpg-agent[30745]: command get_passphrase failed: Inappropriate ioctl for device

答案1

您应该设置GPG_TTY环境变量才能使其正常工作,如下所示这个文件:

GPG_TTY=$(tty)
export GPG_TTY

这两行应该在你的~/.bashrc(假设是 bash)中,所以每次你打开新的终端会话时它们都会运行。

不过,还有另一种解决方案:在 bash 中,您可以pv使用进程替换来运行并假装它是一个文件:

gpg -o file.gpg --symmetric <(pv file)

因此,将事物通过管道输入到需要额外输入的程序可能不是一个好主意。它的工作方式可能与预期不同。

相关内容