GPG 密钥存在于列表中?

GPG key exists in the list?

我想创建一个 shell 脚本,但我以前没有使用过它。 有一个 gpg 命令:

gpg --keyserver SERVER --recv-keys  KEY

问题是如果密钥已经添加,我不想运行这个命令。有什么方法可以检查密钥列表中是否存在密钥? 谢谢!

你可以这样做:

[[ $(gpg --list-keys | grep -w KEY) ]] && echo "Key exists" ||
gpg --keyserver SERVER --recv-keys  KEY

附加(用于 apt 密钥环):

[[ $(apt-key list | grep -w KEY) ]] && echo "Key exists" ||
gpg --keyserver SERVER --recv-keys  KEY

如果 apt-key 可用

运行 gpg --list-keys [key-id](或缩写命令 -k),如果存在匹配键,则 return 代码为 0(成功),或者其他否则(失败)否则。不要像其他人在评论中建议的那样在之后列出所有密钥和 grep,对于密钥环中的大量密钥,这将 可怕地 变慢。 运行

gpg --list-keys [key-id] || gpg --keyserver [server] --recv-keys [key-id]

获取丢失的密钥,可能会丢弃第一个 gpg 调用的输出 (gpg --list-keys [key-id] >/dev/null 2>&1 || ...),因为您只对 return 代码感兴趣。

请注意

正确的做法是运行下面的命令

gpg --keyserver hkp://keyserver.ubuntu.com -k [your-key-id]