我在 WSL2 Debian 上使用 GPG 一段时间了,一切都很完美,但昨天我在使用 git 时开始收到有关 gpg 标志的错误。
尝试运行echo "test" | gpg --clearsign
,我收到以下消息:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
test
gpg: signing failed: No such file or directory
gpg: [stdin]: clear-sign failed: No such file or directory
我尝试了以下方法来解决该问题:
gpgconf --kill gpg-agent
使用和杀死 gpg-agentkillall gpg-agent
- 重新启动 WSL2
- 重新启动我的主机
- 生成一个新密钥,这给了我与测试标志相同的消息
- 创建一个带有选项的
gpg.conf
文件no-tty
- 使用
chmod 700
于~/.gnupg/private-keys-v1.d
我正在使用 gpg 版本 2.2.27 和 libgcrypt 1.8.8。
答案1
事实证明,有些东西覆盖了我的tty
变量,这让 gpg 变得疯狂,因为在我的变量中,.zshrc
我已导出GPG_TTY
为$(tty)
.我设法解决了这个问题export GPG_TTY=`tty`
。
编辑:经过进一步调查,我发现故障出在 Powerlevel10k 内,有关详细信息,请参阅这个 StackExchange 线程。
答案2
我在 Debian 上使用 Rider 时遇到了这个问题。
最后按照以下说明解决了该问题:https://wiki.archlinux.org/title/GnuPG#Unattended_passphrase
添加allow-loopback-pinentry
~/.gnupg/gpg-agent.conf
添加pinentry-mode loopback
~/.gnupg/gpg.conf