gpg keyserver地址不可用

时间:2017-12-29 06:55:14

标签: gnupg

现在通过gnupg在密钥服务器的帮助下验证下载的tarball的哈希值是一个很好的做法。根据我的经验,最常用的密钥服务器之一是ha.pool.sks-keyservers.net(报告增加了5M密钥)。我经常使用此密钥服务器gpg: keyserver receive failed: Address not available收到以下错误。

这太烦人了。这只是sks-keyservers.net的问题吗?如果是这样,为什么人们继续使用它?

1 个答案:

答案 0 :(得分:1)

似乎是一个常见错误,解决方案是使用多个密钥服务器。有一个简单的脚本gpg_verify

#!/usr/bin/env bash

set -e

if [[ -n "${DEBUG}" ]]; then
    set -x
fi

signature="${1}"
file="${2}"
found="";

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

export GNUPGHOME="$(mktemp -d)"

IFS=';' read -ra keys <<< "${GPG_KEYS}"

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}" && found="yes" && break 2
    done
done

if [[ -z "${found}" ]]; then
    echo >&2 "error: failed to fetch GPG key ${GPG_KEYS}"
    exit 1
fi

gpg --batch --verify "${signature}" "${file}"
rm -rf "${GNUPGHOME}" "${signature}"

用法:

export GPG_KEYS=[YOUR GPG KEY]
gpg_verify archive.tar.gz.asc archive.tar.gz