当前位置: 首页 > 工具软件 > GnuPG > 使用案例 >

GnuPG问题记录 - keyserver receive failed: Network is unreachable

牟恺
2023-12-01


前言

同事在自己电脑上运行打包脚本也遇到了这个问题iOS问题记录 - CocoaPods is installed but broken,于是我先帮他配置Ruby的环境变量,发现问题还是存在,于是打算帮他装个RVM试试看,详细步骤请看iOS问题记录 - CocoaPods is installed but broken(续)。尴尬的事情来了,GnuPG设置密钥这一步就失败了。

开发环境

  • GnuPG: 2.3.8

问题描述

设置RVM密钥:

gpg --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

执行出现报错:

gpg: keyserver receive failed: Network is unreachable

问题分析

瞧瞧这报错信息,多么的清晰明了,直白的跟你说网络有问题。那么,网络真的有问题吗?

我把同事的电脑检查了一遍,没有发现什么异常,同一网络下,在我电脑上是正常的。那只能试试指定其他keyserver(密钥服务器),结果还是不行,这不禁让我想起来了那个让人怀疑人生的问题Flutter & iOS问题记录 - The application‘s Info.plist does not contain a valid CFBundleShortVersionString

难道公司网络真的有问题?抱着怀疑的态度,我尝试手机开热点给电脑,结果还是不行。真是离了大谱,同事的电脑有毒!网上翻了翻都没找到有用的解决方法,没办法,那只能用个笨办法。简单来说就是把我电脑上已经设置的密钥导出到同事电脑上。

先看看电脑上已经装的密钥:

gpg --list-keys

执行输出:

pub   rsa4096 2016-11-11 [SC]
      7D2BAF1CF37B13E2069D6956105BD0E739499BDB
uid             [ 未知 ] Piotr Kuczynski <piotr.kuczynski@gmail.com>
sub   rsa4096 2016-11-11 [E]

pub   rsa4096 2014-10-28 [SC]
      409B6B1796C275462A1703113804BB82D39DC0E3
uid             [ 未知 ] Michal Papis (RVM signing) <mpapis@gmail.com>
uid             [ 未知 ] Michal Papis <michal.papis@toptal.com>
uid             [ 未知 ] [jpeg image of size 5015]
sub   rsa2048 2015-11-02 [E]

接着分别导出设置的两个密钥:

# 导出密钥1
gpg -a -o ~/rvm-pub-1.key --export 409B6B1796C275462A1703113804BB82D39DC0E3
# 导出密钥2
gpg -a -o ~/rvm-pub-2.key --export 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

-a:密钥以ASCII的方式输出,默认以二进制的方式输出
-o:指定输出写入的文件路径
--export:指定要导出的密钥

这是导出公钥操作,如果是导出私钥,除了要将--export换成--export-secret-keys,还需要额外的密码。

如果你对命令行工具的命令不熟悉,无脑先来个xxx help/xxx -help/xxx --help命令,看看有啥可以使用的命令。以上的gpg命令可以通过gpg --help查看用法。

密钥文件导出成功后,那接下来就是这个问题的解决方案啦。

解决方案

RVM密钥文件下载地址:

下载解压文件后分别导入两个密钥:

# 导入密钥1
gpg --import ~/rvm-pub-1.key
# 导入密钥2
gpg --import ~/rvm-pub-2.key

执行导入命令时请将~/rvm-pub-1.key~/rvm-pub-2.key替换为你电脑上密钥文件的实际路径,当然你也可以输完命令gpg --import 后直接将密钥文件拖到命令窗口,命令后面会自动加上密钥文件的绝对路径。

导入密钥成功后,直接执行RVM的安装命令:

\curl -sSL https://get.rvm.io | bash -s stable

RVM安装成功,这个问题到这应该算是解决了。不过还没完,接下来的安装Ruby出问题了,没想到先前的一番操作还给自己留下了一个坑。通过以下命令安装Ruby时会自动变成安装Homebrew

rvm install ruby-3.0.0

真是流年不利,最近奇奇怪怪的问题层出不穷。经过一番排查,发现是刚开始解决问题时配置的Ruby环境变量导致的,如果你也遇到了,可以试试不再使用Homebrew安装的Ruby,注释或删除配置的环境变量:

# export PATH="/usr/local/opt/ruby/bin:$PATH"

总结

公钥是可能过期失效的,所以以上的解决方案只能应急使用,如果你遇到公钥过期失效的情况,可以留言告诉我,我会及时更新密钥文件。

最后

如果这篇文章对你有所帮助,请不要吝啬你的点赞加星,谢谢~

 类似资料: