如何将私钥导入到GPG中,使其成为默认密钥?

我正在尝试通过将GnuPG密钥对导入到每台机器上来共享它。以下是我的操作步骤:
gpg --allow-secret-key-import --import secret.gpg.key
gpg --import public.gpg.key

密钥已使用-a导出。

在执行gpg --list-keys时,公钥显示正确,但私钥不显示(gpg --list-secret-keys)。

我做错了什么?

顺便说一下:我是用Puppet来做这个的,所以任何不需要我输入命令(如--edit-key等)的解决方案都会受到赞赏。


你能详细说明一下gpg --list-secret-keys输出有什么问题吗?GPG没有标记密钥为默认的标志。它只是选择列表中的第一个密钥作为默认密钥。如果你需要改变这种行为,我可以提供一个解决方案。 - gertvdijk
1个回答

要更改GnuPG在签名/加密时选择哪个密钥的行为,请使用default-key配置参数,并将密钥ID作为值。
例如,使用:
$ gpg --list-secret-keys 
/home/gert/.gnupg/secring.gpg
-----------------------------
sec   4096R/13371337 2011-01-01 [expires: 2014-01-01]
uid                  Gert van Dijk (1st key) <name@example.tld>
ssb   4096R/31337313 2011-01-01

sec   4096R/12345678 2013-04-23 [expires: 2014-01-01]
uid                  Gert van Dijk (2nd key) <name@example.tld>
ssb   4096R/87654321 2013-04-23

~/.gnupg/gpg.conf中添加一行:
default-key 12345678

或者,作为替代方案,使用长密钥ID(推荐使用长密钥ID,因为短密钥ID可能会发生冲突)。
$ gpg --list-secret-keys --with-colon
sec::4096:1:ABCDEFAB12345678:2013-01-01:2014-01-01:::Gert van Dijk (2nd key) <user@example.tld>:::

~/.gnupg/gpg.conf中添加一行。
default-key ABCDEFAB12345678

1默认情况下,gpg --list-secret-keys 列表中的第一个密钥将被用作默认密钥 — 这是正确的吗? - Ini