gpg:错误设备的 ioctl 不合适

问题描述 投票:0回答:2

我正在运行一个自托管的 Renovate 实例,我需要使用 GPG 密钥签署对 GitLab 的提交。
为此,我使用我的 GitLab 用户的 PGP 私钥块设置环境变量 RENOVATE_GIT_PRIVATE_KEY,这会自动导入。
但尝试这样做时出现以下错误:

gpg: directory '/home/ubuntu/.gnupg' created
gpg: keybox '/home/ubuntu/.gnupg/pubring.kbx' created
gpg: /home/ubuntu/.gnupg/trustdb.gpg: trustdb created
gpg: key 72A96C0D4FA8543C: public key "Dummy User <[email protected]>" imported
gpg: key 72A96C0D4FA8543C/72A96C0D4FA8543C: error sending to agent: Inappropriate ioctl for device
gpg: error building skey array: Inappropriate ioctl for device
gpg: error reading '/tmp/git-private.key': Inappropriate ioctl for device
gpg: import from '/tmp/git-private.key' failed: Inappropriate ioctl for device
gpg: Total number processed: 0
gpg:               imported: 1
gpg:       secret keys read: 1

我按照此说明进行了设置https://docs.renovatebot.com/self-hosted-configuration/#gitprivatekey

gnupg ioctl renovate
2个回答
13
投票

我通过在命令执行之前添加

export GPG_TTY=$(tty)
修复了不适当的 ioctl 问题


2
投票

您可以修复它,告诉 gpg 不要依赖终端,例如读取键盘(stdin)等,使用参数

--batch

考虑到它是由脚本运行,密码短语预计通过其他方式提供,例如通过

--passphrase
参数,所以一个完整的示例:

$ gpg --batch --passphrase ${my_passphrase} --import ${key_path}
© www.soinside.com 2019 - 2024. All rights reserved.