在 ubuntu:bionic Docker 容器中导入 GPG 密钥

在 ubuntu:bionic Docker 容器中导入 GPG 密钥

我正在尝试使用 ubuntu:bionic Docker 映像在 Gitlab CI 系统上导入 GPG 密钥。为了安全地执行此操作,我必须将密钥存储在所谓的秘密变量中(然后在运行时简单地变为环境变量)。

因此我尝试以非二进制格式导出密钥,如下所示:

gpg2 --armor --export-secret-keys "my name <my email>" > my-gpg-key.asc

my-gpg-key.asc 当时看起来像这样:

-----BEGIN PGP PRIVATE KEY BLOCK-----

long multi line ascii string
-----END PGP PRIVATE KEY BLOCK-----

然后我复制了文件内容并从中定义了一个秘密变量。该变量名为LAUNCHPAD_GPG_PRIVATE_KEY

以下是我尝试过的:

apt-get -qq update --yes
apt-get -qq install --yes gnupg2 > /dev/null
export GPG_TTY=$(tty) # compensate for ioctl error
gpg2 --list-keys
gpg2 -v --import <(echo "$LAUNCHPAD_GPG_PRIVATE_KEY")
gpg2 --list-keys

这导致:

gpg: key 17B1EA9E090F697D/17B1EA9E090F697D: error sending to agent: No such file or directory
gpg: error building skey array: No such file or directory

我也尝试使用 gpg 而不是 gpg2 导出和导入密钥:结果相同......

我也尝试过跑步

gpg-agent --daemon

gpg-agent --daemon --allow-loopback-pinentry

导入之前...但仍然:同样的错误。

有什么想法可以正确完成此操作吗?

答案1

通过添加批处理标志,我成功地将其导入,没有任何错误。

gpg2 -v --batch --import <(echo "$LAUNCHPAD_GPG_PRIVATE_KEY")

不要问我为什么这样可以解决问题。我花了好几个小时才弄清楚……

相关内容