当向hkp://pool.sks-keyservers.net发送时,出现"gpg: keyserver send failed: No keyserver available"错误。

9

我正在使用以下命令

gpg --keyserver hkp://pool.sks-keyservers.net --send-keys <MY-8-DIGIT-SIGNATURE>

根据这篇文章的指导https://getstream.io/blog/publishing-libraries-to-mavencentral-2021/,但是当我尝试时,它报告说:
gpg: sending key <MY-16-DIGIT-SIGNATURE> to hkp://pool.sks-keyservers.net
gpg: keyserver send failed: No keyserver available
gpg: keyserver send failed: No keyserver available

我上面的命令有什么问题?

更新结果
这个命令在macOS Catalina,Intel Core i7机器上可用。 但是在macOS Big Sur,M1 ARM64机器上无法使用。

不确定是Big Sur还是M1 ARM64机器的问题?


我也向GPG支持提出了一个问题 https://gpgtools.tenderapp.com/discussions/feedback/16485-gpg-recv-keys-and-send-keys-not-working-on-macos-big-sur-m1-machine - Elye
我有BigSur和一颗i9英特尔处理器,出现了相同的问题。 - alilland
5个回答

12

找到了解决此问题的方法。

首先,我使用命令杀死了dirmngr进程。

gpgconf --kill dirmngr

然后,我使用--standard-resolver参数启动dirmngr

dirmngr --debug-all --daemon --standard-resolver

最后,在另一个终端上运行以下命令:

gpg --verbose --keyserver hkp://pool.sks-keyservers.net --recv-keys 0x0A292B5F8A3C247F586F19D7E1AF518CC4B1DC35

这使我得到了结果:

gpg: key E1AF518CC4B1DC35: "Kristof (GPGTools) <[email blocked]>" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1

不确定为什么我需要--standard-resolver,但它适用于我的情况。

更新

发现了一种更好的方法,可以默认为dirmngr使用standard-resolver。只需将standard-resolver添加到~/.gnupg/dirmngr.conf文件中即可。


9
https://sks-keyservers.net/ 此服务已被弃用。 这意味着它不再维护,也不会发布新的HKPS证书。不应期望服务的可靠性。

更新2021-06-21:由于更多的GDPR索取下架请求,池的DNS记录将不再提供。

更新2021-06-21:你可以使用其他的服务器,例如:

  • keyserver.ubuntu.com
  • keys.openpgp.org
  • pgp.mit.edu

类似这样的命令:

gpg --keyserver keys.openpgp.org --send-key [key id]


2

我曾经遇到过类似的问题,这个方法对我有效。

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 34893610CEAA9512

您可以使用脚本

#!/bin/bash

declare -a keyservers=(
    "hkp://keyserver.ubuntu.com:80"
    "keyserver.ubuntu.com"
    "ha.pool.sks-keyservers.net"
    "hkp://ha.pool.sks-keyservers.net:80"
    "p80.pool.sks-keyservers.net"
    "hkp://p80.pool.sks-keyservers.net:80"
    "pgp.mit.edu"
    "hkp://pgp.mit.edu:80"
)

keys=$(apt update 2>&1 | grep -o '[0-9A-Z]\{16\}$')

for key in $keys; do
    for server in "${keyservers[@]}"; do
        echo "Fetching GPG key ${key} from ${server}"
        gpg --keyserver $server --keyserver-options timeout=10 --recv-keys ${key}
        if [ $? -eq 0 ]; then
            echo "Key '${key}' successful added from server '${server}'"
            break
        else
            echo "Failed add key '${key}' from server '${server}'. Try another server"
            continue
        fi
    done
done

一开始尝试了没有使用hkp://和:80的方式,但是仍然出现了相同的错误。只有使用完整的URL才能正常工作。谢谢! - jcomeau_ictx

1

这对我很有帮助,可以将我的密钥发送到OSSRH中央服务器支持的3个密钥服务器:

  • keyserver.ubuntu.com
  • keys.openpgp.org
  • pgp.mit.edu

0

我发现我没有安装gnupg2。使用这个命令解决了我的问题

  sudo apt install gnupg2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接