通过串导入PGP公钥

问题描述 投票:3回答:3

我想导入PGP公钥到我在脚本钥匙扣,但我不希望它的内容写入到文件中。现在我的脚本做到这一点:

curl http://example.com/pgp-public-key -o /tmp/pgp && gpg --import /tmp/gpg

我怎么能写这个剧本,所以我可以叫gpg --import并导入公共密钥为字符串?谢谢您的帮助。

shell gpgpu pgp
3个回答
10
投票

gpg --import知道操作的方法有两种:它可以从一个文件(例如gpg --import key.gpg)读取或 - 如果没有文件名被传递 - 从标准输入读取。 curl,另一方面将所获取的文件打印到STDOUT如果没有-o指定参数。与管道从curl结果将直接流分成gpg --import两者一起把:

curl http://example.com/pgp-public-key | gpg --import

1
投票

在bash中,你可以使用:

gpg --import <(curl http://example.com/pgp-public-key)

这就是所谓的process substitution


0
投票

您还可以使用curl搜索从公共密钥服务器的关键,如果你知道密钥的ID:

curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&options=mr&search=<key-id-here>" | gpg --import -

注意:您必须在前面加上0x密钥ID。

大多数公共密钥服务器允许您截断密钥ID,所以你不必键入整个事情。例如,下面的三个例子会产生完全相同的关键:

curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&options=mr&search=0x9454C19A66B920C83DDF696E07C8CCAFCE49F8C5" | gpg --import -

curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&options=mr&search=0x07C8CCAFCE49F8C5" | gpg --import -

curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&options=mr&search=0xCE49F8C5" | gpg --import -

最关键的服务器是同步的,所以你并不一定需要坚持使用一个密钥服务器。你可以看到其他关键服务器的列表,并在SKS密钥服务器status page的信息。

-fsSL命令curl说明:

-f--fail

(HTTP)失败默默(没有输出)的服务器错误。

-s--silent

静音或静音模式。

-S--show-error

当与-s,--silent使用的,它使卷曲显示一个错误消息,如果它失败。

-L--location

(HTTP)如果服务器报告所请求的页面已移动到不同的位置(与位置指示:头和3XX响应代码),此选项将卷曲重新在新的地方的要求。

© www.soinside.com 2019 - 2024. All rights reserved.