使用gpg --search时出现Network unreachable错误的解决方法
GPG
--search-key 报「Network is unreachable」错误的排查与修复 可能的问题根源
- GPG默认使用的密钥服务器或协议(如HKPS)存在连接障碍,即便能ping通目标服务器也无法建立TCP连接
- 系统防火墙/SELinux拦截了GPG的网络请求(ping基于ICMP协议,与GPG使用的TCP协议权限不同)
- 配置文件拼写错误导致设置未生效(比如误写为
dirnmgr.conf,正确文件名是dirmngr.conf) - DNS解析异常:ping使用的是缓存IP,但GPG解析密钥服务器时出现失败
- 旧版本GPG存在协议兼容性问题
修复步骤
1. 临时指定密钥服务器与协议测试
直接在命令中明确指定密钥服务器和HTTP/HKP协议,绕过默认配置验证:
gpg --keyserver hkp://keys.openpgp.org --search-key xxx # 或使用HTTP端口直接访问 gpg --keyserver http://keys.openpgp.org:80 --search-key xxx
如果此命令能正常执行,说明默认密钥服务器配置存在问题。
2. 修正并生效密钥服务器配置
首先确认配置文件名正确(是~/.gnupg/dirmngr.conf,而非dirnmgr.conf),编辑该文件添加以下内容:
keyserver hkp://keys.openpgp.org standard-resolver no-use-tor
保存后重启dirmngr服务使配置生效:
gpgconf --kill dirmngr # 若使用systemd系统,也可执行 systemctl restart dirmngr
3. 检查防火墙与SELinux限制
- 防火墙:临时关闭防火墙测试是否恢复正常:
若恢复,需添加允许GPG联网的规则,例如:systemctl stop firewalldfirewall-cmd --add-service=gnupg --permanent firewall-cmd --reload - SELinux:临时设置为宽容模式测试:
若恢复,永久允许GPG联网:setenforce 0setsebool -P gnupg_use_network 1
4. 验证DNS解析是否正常
使用dirmngr自带工具测试密钥服务器的解析与连接:
dirmngr --debug-level guru --hostkeys keys.openpgp.org
查看输出中是否存在DNS解析失败、TCP连接被拒绝等信息,若有则需检查系统DNS配置(如/etc/resolv.conf)。
5. 升级GPG版本
如果使用的是较旧版本的GPG,可能存在协议兼容性问题,升级到最新稳定版后重试。
内容的提问来源于stack exchange,提问作者RubenLaguna
相关产品推荐
相关产品推荐

