MongoDB GPG - 签名无效

Ass*_*hko 87 ubuntu mongodb

我正在使用以下网址中的说明在Ubuntu 14.04计算机上安装MongoDB:https: //docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

所以我跑:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
Run Code Online (Sandbox Code Playgroud)

然后:

echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
Run Code Online (Sandbox Code Playgroud)

其次是:

sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

然后,我在更新结束时收到以下警告:

W:GPG错误:http://repo.mongodb.org trusty/mongodb-org/3.2发布:以下签名无效:BADSIG D68FA50FEA312927 MongoDB 3.2发布签名密钥

如果我忽略警告并尝试运行:

sudo apt-get install -y mongodb-org
Run Code Online (Sandbox Code Playgroud)

我明白了:

警告:以下软件包无法通过身份验证!
mongodb-org-shell mongodb-org-server mongodb-org-mongos mongodb-org-tools mongodb-org E:有问题,-y没用--force-yes

关于如何解决的任何想法?谢谢!

dlo*_*tin 269

在一个命令中从Ubuntu密钥服务器更新所有过期的密钥:

sudo apt-key list | \
 grep "expired: " | \
 sed -ne 's|pub .*/\([^ ]*\) .*|\1|gp' | \
 xargs -n1 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys
Run Code Online (Sandbox Code Playgroud)

命令说明:

  1. sudo apt-key list - 列出系统中安装的所有密钥;
  2. grep "expired: " - 只留下过期密钥的行;
  3. sed -ne 's|pub .*/\([^ ]*\) .*|\1|gp' - 提取密钥;
  4. xargs -n1 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys - 通过找到过期密钥服务器从Ubuntu密钥服务器更新密钥.

资源

  • 对于今年以后从"公认的解决方案"中看到的人来说,这是最简单的解决方案. (10认同)
  • 这似乎不再起作用,因为“apt-key list”的格式不再与此答案中处理它的命令兼容。相反,运行`sudo apt-key list | grep -A 1 已过期`。复制 40 位十六进制数字的指纹。接下来,运行命令“sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $FINGERPRINT”,其中“$FINGERPRINT”是您复制的值(如果包含空格,请将周围引用)。 (10认同)
  • 请注意:劳伦斯的解决方案对我有用,但请注意,在我的情况下,它是 8 个字符的指纹,而不是 40 个字符的指纹。 (3认同)
  • 这在Mint上效果很好。注意:--recv-key的参数是过期的密钥。 (2认同)

PyD*_*SRS 41

听起来你需要重做MongoDB的安装步骤.首先,删除MongoDB的任何现有存储库文件.请执行以下操作.

$ sudo rm /etc/apt/sources.list.d/mongodb*.list
Run Code Online (Sandbox Code Playgroud)

接下来,添加密钥:(没有密钥,存储库将不会加载).

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
Run Code Online (Sandbox Code Playgroud)

现在,创建一个新的MongoDB存储库列表文件:

$ echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
Run Code Online (Sandbox Code Playgroud)

添加存储库详细信息后,我们需要更新软件包列表.

$ sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

现在安装MongoDB.

sudo apt install mongodb-org
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 !

  • 唯一需要的步骤是重新导入密钥:sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 (4认同)

Jul*_*ENS 17

您无需重新安装mongo软件包,只需更改密钥如下:

列出密钥以确认它已过期:

apt-key list | grep "expired:"
Run Code Online (Sandbox Code Playgroud)

更换钥匙:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xd68fa50fea312927
Run Code Online (Sandbox Code Playgroud)

数字0xd68fa50fea312927是当前有效密钥ID(2019-10-09到期),您可以在此处查看.


Ful*_*per 9

在 Ubuntu 16.04 上安装 MongoDB 4.0 时,我也遇到了这个问题。所以我做了。

  1. sudo rm /etc/apt/sources.list.d/mongodb*.list - 删除 MongoDB 的任何现有文件

  2. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E52529D4 - 添加密钥

  3. sudo bash -c 'echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" > /etc/apt/sources.list.d/mongodb-org-4.0.list' - 创建一个新的 MongoDB 存储库列表文件

现在,通过更新存储库完成安装,然后安装 MongoDB,启用mongod服务并启动它,最后检查您的 MongoDB 版本:

sudo apt update
sudo apt install mongodb-org

systemctl enable mongod.service
systemctl start mongod.service

mongo --version
Run Code Online (Sandbox Code Playgroud)


小智 8

似乎版本3.2.1已于2016年1月11日发布,此时包裹签名很糟糕.包裹签名前一天很好.

参考:https://jira.mongodb.org/browse/SERVER/fixforversion/15908/ selectedTab = com.atlassian.jira.jira-projects-plugin:version-summary-panel

您可以添加--force-yes选项,也可以等待mongodb团队看到并解决问题的几个小时.

那里已经有一张票:https://jira.mongodb.org/browse/SERVER-22144

  • 仍在2017年10月 (8认同)
  • 2018年1月,仍然有它. (4认同)
  • 而且仍然在2018年3月 (3认同)

小智 7

我在 Google Cloud 上的 Ubuntu 18.04 实例上安装 MongoDB 4.2 时遇到了类似的问题并收到以下错误。

W: GPG error: http://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 4B7C549A058F8B6B
E: The repository 'http://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 Release' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details
Run Code Online (Sandbox Code Playgroud)

对我有用的解决方案是运行以​​下命令来获取密钥。我在 MongoDB 官方 Jira 问题页面上找到了这个。

/usr/bin/curl -sLO https://www.mongodb.org/static/pgp/server-4.2.asc && sudo /usr/bin/apt-key add server-4.2.asc
Run Code Online (Sandbox Code Playgroud)

我在 MongoDB 官方 Jira issues 中找到了这个解决方案。这是问题的链接。


nsh*_*143 6

我使用以下命令在我的ubuntu 16.04上安装MongoDB 3.2时也遇到了这个问题.以下解决方案是作为与MongoDB的v3.2安装相关的问题提供的

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
echo "deb http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

运行上面的更新命令后,我发现了以下警告

W: GPG error: http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release: The following signatures were invalid: KEYEXPIRED 1507497109
W: The repository 'http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 Release' is not signed.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
Run Code Online (Sandbox Code Playgroud)

进一步调查使用以下命令列出所有键

sudo apt-key list
Run Code Online (Sandbox Code Playgroud)

它显示当前密钥已于2017-10-08过期

pub   4096R/EA312927 2015-10-09 [expired: 2017-10-08]
uid                  MongoDB 3.2 Release Signing Key <packaging@mongodb.com>
Run Code Online (Sandbox Code Playgroud)

这也是有意义的MongoDB Current Stable Release现在(3.4.9).

为了解决这个问题,我们先做一个小清理(可选)

  1. 我们删除了添加的旧密钥

    sudo apt-key list //列出所有密钥

    sudo apt-key del EA312927 //找到要删除的密钥的uid

    apt-key列表| grep Mongodb //验证是否已删除

  2. 现在我们删除/etc/apt/sources.list.d中添加的MongoDB repo

    sudo rm /etc/apt/sources.list.d/mongodb*.list

  3. 现在我们使用以下命令安装最新的稳定版MongoDB(3.4.9)

导入Ubuntu软件包管理器使用的公钥

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
Run Code Online (Sandbox Code Playgroud)

为mongoDB创建文件列表以获取当前存储库

echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-3.4.list
Run Code Online (Sandbox Code Playgroud)

安装MongoDB

sudo apt-get update
sudo apt-get install mongodb-org
Run Code Online (Sandbox Code Playgroud)


小智 5

对于解决该问题,以下几点很重要:

sudo rm /etc/apt/sources.list.d/mongodb*.list
Run Code Online (Sandbox Code Playgroud)