我想在脚本中将PGP公钥导入我的钥匙串,但我不希望它将内容写入文件。现在我的脚本执行此操作:
curl http://example.com/pgp-public-key -o /tmp/pgp && gpg --import /tmp/gpg
我怎么能写这个脚本所以我可以调用gpg --import
并将公钥作为字符串导入?谢谢你的帮助。
答案 0 :(得分:9)
gpg --import
知道两种操作方式:它可以从文件中读取(例如gpg --import key.gpg
),或者 - 如果没有传递文件名 - 从STDIN读取。如果没有给出curl
参数,-o
会将获取的文档打印到STDOUT。将两者放在一起将直接将结果从curl
流式传输到gpg --import
:
curl http://example.com/pgp-public-key | gpg --import
答案 1 :(得分:1)
答案 2 :(得分:0)
如果您知道密钥的ID,也可以使用curl
从公钥服务器搜索密钥:
curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&options=mr&search=<key-id-here>" | gpg --import -
注意:您必须在密钥ID前加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 Keyserver status page上查看其他关键服务器列表和信息。
-fsSL
命令中curl
的说明:
(HTTP)服务器错误无声地失败(根本没有输出)。
无声或安静模式。
与-s, - silent一起使用时,如果curl失败,则会使curl显示错误消息。
(HTTP)如果服务器报告所请求的页面已移动到其他位置(用Location:标题和3XX响应代码表示),则此选项将使curl重做新位置的请求。