安装MongoDB时导入官方PGP公钥报gpg: no valid OpenPGP data found错误的解决咨询
MongoDB导入公钥报
gpg: no valid OpenPGP data found的解决方法 问题核心原因
这个报错的本质是通过管道传递给apt-key add的内容,根本不是有效的OpenPGP格式公钥。之前追加--no-check-certificate没有效果,是因为这个参数仅作用于TLS证书校验环节,既解决不了网络连通性问题,也修正不了内容被拦截/截断的问题——原命令里的-q静默参数把wget的实际拉取错误信息隐藏了,导致看不到wget根本没拿到正确内容的真实原因。
可落地的排查与解决步骤
- 第一步:先单独验证wget拉取的实际内容
不要直接把wget的输出管道给apt-key,先单独把公钥文件下载到本地查看内容:wget -O server-4.4.asc https://www.mongodb.org/static/pgp/server-4.4.asc
执行cat server-4.4.asc查看文件内容,如果内容不是以-----BEGIN PGP PUBLIC KEY BLOCK-----开头的有效公钥块,就说明拉取环节就已经出错,根本不存在“公钥导入失败”的问题,只是拿到的内容不对。 - 第二步:换用curl拉取验证
wget在部分网络环境下对重定向、代理的兼容性较差,可以替换为curl执行拉取+导入:curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
这个命令带的参数会自动跟随重定向、拉取失败时不返回拦截页的无效内容,如果网络通畅会直接返回导入成功的OK提示。 - 第三步:绕开官方站点,从Ubuntu公钥服务器拉取对应Key
如果直接拉取mongodb.org的公钥始终被拦截、拿不到有效内容,可以通过Ubuntu官方维护的公钥服务器拉取MongoDB 4.4版本对应的公钥(公钥ID为656408E390CFB1F5):sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 656408E390CFB1F5
这个方式不依赖直接访问mongodb.org站点,能绕开原地址的网络访问限制。 - 第四步:适配新版系统的公钥导入规范
如果已经拿到了有效的公钥文件,但依旧报gpg格式错误,是旧版apt-key接口和新版gpg输出格式不兼容导致的,可以手动完成公钥的格式转换与导入:- 对下载到本地的armored格式公钥做去装甲处理,生成系统可识别的gpg格式文件:
gpg --dearmor < server-4.4.asc - 将生成的公钥文件移动到系统的第三方keyring目录:
sudo mv server-4.4.asc.gpg /etc/apt/trusted.gpg.d/mongodb-4.4.gpg
这种方式是Debian/Ubuntu新版系统推荐的公钥导入方式,完全绕开旧版apt-key的接口兼容问题。
- 对下载到本地的armored格式公钥做去装甲处理,生成系统可识别的gpg格式文件:
内容的提问来源于stack exchange,提问作者Old Shatterhand
相关产品推荐
相关产品推荐

