MongoDB GPG - Недействительные подписи


100

Я устанавливаю MongoDB на машину Ubuntu 14.04, используя инструкции по адресу: https://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

Итак, я бегу:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

А потом:

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

С последующим:

sudo apt-get update

Затем в конце обновления я получаю следующее предупреждение:

W: Ошибка GPG: http://repo.mongodb.org trusty / mongodb-org / 3.2 Release: следующие подписи недействительны: BADSIG D68FA50FEA312927 MongoDB 3.2 Release Signing Key

Если я проигнорирую предупреждение и попытаюсь запустить:

sudo apt-get install -y mongodb-org

Я получил:

ВНИМАНИЕ: следующие пакеты не могут быть аутентифицированы!
mongodb-org-shell mongodb-org-server mongodb-org-mongos mongodb-org-tools mongodb-org E: есть проблемы, и -y использовался без --force-yes

Есть идеи, как решить? Спасибо!


5
Та же ошибка, также 14.04 LTS
Майк,

1
Проблема все еще существует в феврале 18, и ниже есть рабочее решение, но не принятое: stackoverflow.com/a/46737148/2273305 @ assaf-hershko, пожалуйста, подумайте об изменении вашего выбора лучшего ответа
hooke

У меня сработал импорт ключей согласно официальной документации по установке на docs.mongodb.com/v3.6/tutorial/install-mongodb-on-ubuntu . По состоянию на 10.06.2019 команда для запускаsudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
Eborbob

Ответы:


288

Обновите все ключи с истекшим сроком действия с сервера ключей 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

Объяснение команды:

  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 на найденные просроченные.

Источник


2
Это отлично сработало на Mint. Примечание. Аргумент для --recv-keyключа - просроченный.
not2qubit

Удивительно, большое спасибо, он решил аналогичные проблемы, которые у меня были с другими приложениями. Мне нужно сохранить это в файле для использования в будущем.
Йоми

12
Для всех, кто видит это спустя годы из «принятого решения», это простейшее решение.
Nicholi

1
Это решение! @ assaf-hershko, пожалуйста, подумайте об изменении принятого решения для этого!
hooke

9
Кажется, это больше не работает, так как формат apt-key listбольше не совместим с командами в этом ответе, которые его обрабатывают. Вместо этого беги sudo apt-key list | grep -A 1 expired. Скопируйте 40-значный отпечаток пальца. Затем запустите команду, sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $FINGERPRINTгде $FINGERPRINTнаходится скопированное вами значение (если оно содержит пробелы, заключите его в кавычки).
Лоуренс Гонсалвес,

48

Похоже, вам нужно повторить шаги по установке MongoDB. Сначала удалите все существующие файлы репозитория для MongoDB. Сделайте как показано ниже.

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

Далее добавляем ключ: (без ключа репозиторий не загрузится).

$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927

Теперь создайте новый файл списка репозиториев 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

После добавления деталей репозитория нам нужно обновить список пакетов.

$ sudo apt-get update

Теперь установите MongoDB.

sudo apt install mongodb-org

Надеюсь это поможет !


Спасибо, @Tiziano. Я рад, что ты получил свое решение.
PyDevSRS

5
Единственный необходимый шаг - повторный импорт ключа: sudo apt-key adv --keyserver hkp: //keyserver.ubuntu.com: 80 --recv EA312927
Бен Макканн

У меня тоже сработало. Я думаю, как сказал Бен, реимпорт - это ключ к разгадке.
Джеймс О'Брайен,

Получение E: невозможно найти пакет mongodb-org
Мухаммед Хафил

25

Вам не нужно переустанавливать пакеты mongo, просто измените ключ следующим образом:

Перечислите ключи, чтобы подтвердить, что срок его действия истек:

apt-key list | grep "expired:"

Заменить ключ:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 0xd68fa50fea312927

Номер 0xd68fa50fea312927 - это текущий действительный идентификатор ключа (срок действия истекает 2019-10-09), как вы можете проверить здесь .


1
Это мне действительно помогло.
Анил Чаудхари

Я думаю, что это метод, более подробно описанный здесь: futurestud.io/tutorials/… . Это сработало для меня.
Little Brain,

9

Похоже, что версия 3.2.1 была выпущена 11 января 2016 года, и с этого момента подпись пакетов плохая. Подпись пакетов накануне прошла нормально.

ссылки: 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


1
Я использовал --force-yes, есть ли риск, на который я иду с этим решением?
Lam

1
Март 2016 года, пока не исправлено.
ретрография

8
Все еще в октябре 2017
Айтор Аснар Альварес

4
Январь 2018 года, все еще есть.
Костанос

3
и все еще в марте 2018
Вакас Малик

9

Я также столкнулся с этой проблемой при установке MongoDB 4.0 на Ubuntu 16.04. Так я и сделал.

  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

По-видимому, проблема решается с помощью шага № 2, импортирования открытого ключа в хранилище ключей ubuntu. Спасибо за ответ!
Ананд Вайдья,

7

Я также столкнулся с этой проблемой при установке MongoDB 3.2 на моем ubuntu 16.04 с помощью следующих команд. Приведенное ниже решение предоставляется как вопрос, связанный с установкой 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

После выполнения указанной выше команды обновления я обнаружил следующие предупреждения

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.

При дальнейшем исследовании с использованием приведенной ниже команды для вывода списка всех ключей

sudo apt-key list

Он показывает, что срок действия текущего ключа истек 2017-10-08.

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

Это также имело смысл, поскольку текущая стабильная версия MongoDB теперь (3.4.9).

Чтобы сначала решить проблему, сделаем небольшую очистку (необязательно)

  1. удаляем старый ключ добавлен

    sudo apt-key list // Список всех ключей

    sudo apt-key del EA312927 // Найдите uid ключа, который нужно удалить

    список APT-ключей | grep Mongodb // Проверяем, если он удален

  2. Теперь мы удаляем репозиторий MongoDB, добавленный в /etc/apt/sources.list.d

    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

Создайте список файлов для 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

Установить MongoDB

sudo apt-get update
sudo apt-get install mongodb-org

3

У меня была такая же проблема, и я решил ее, установив mongodb с помощью метода tarball. Подробную информацию см. По ссылке ниже.

https://docs.mongodb.org/manual/tutorial/install-mongodb-on-linux/

Добавление деталей ниже

  1. curl -O https://fastdl.mongodb.org/linux/mongodb-linux-i686-3.2.0.tgz
  2. tar -zxvf mongodb-linux-i686-3.2.0.tgz
  3. mkdir -p mongodb && cp -R -n mongodb-linux-i686-3.2.0 / mongodb
  4. экспорт PATH = / bin: $ PATH

  5. затем запустите mongod (может потребоваться указать путь к базе данных)


1
Ссылки - это хорошо, но попробуйте объяснить решение здесь само
Nehal

1
Я могу это сделать, но сама ссылка объясняет достаточно подробностей, поэтому я подумал, что в этом нет необходимости ..
Харрисон Хёнмин Чо,

2

Собственно, для решения проблемы очень важно следующее

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

1

У меня была такая же проблема, поэтому я сделал:

root@skarabi:~# apt remove mongodb-org

Затем:

root@skarabi:~# sudo rm /etc/apt/sources.list.d/mongodb*.list

После :

root@skarabi:~# apt update


Это просто удалит репозитории MongoDB с вашего компьютера, не так ли? Как тогда будешь устанавливать?
Колин Николсон

а затем установить его, вы можете проверить по этой ссылке: docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu Есть даже ключ GPG. У меня это работает
Зинеб СКАРАБИ

Это опасно и плохо. Нет причин apt removeудалять (удалять) Mongo с вашего компьютера, просто чтобы получить самый новый ключ. Вы уничтожите всю свою базу данных, чтобы попытаться получить обновленный ключ для подходящих источников.
BoomShadow

1

Используя ответ dlopatin, я придумал это для Ubuntu 18.04, поскольку этот код больше не работает:

sudo apt-key list | \
grep -A 1 "\[expired:" | \
sed -ne 's|^\s\{1,10\}\(\w*\)|\1|gp' | \
xargs -d '\n' sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys
  1. Список ключей sudo apt-key list
  2. Получите просроченный и распечатайте следующую строку с отпечатком пальца grep -A 1 "\[expired:"
  3. Используйте sed, чтобы извлечь только строки, начинающиеся с пробела ^\s\{1,10\}, и выберите буквенно-цифровые символы \(\w*\), замените эти строки выбранной группой, которая является отпечатком пальца \1, повторите для всех возвращенных строк g, затем распечатайте отпечаток пальца p. Это дает:sed -ne 's|^\s\{1,10\}\(\w*\)|\1|gp'
  4. Используйте xargs с разделителем для '\ n', иначе он будет разбит на пробелы : xargs -d '\n', затем передайте отпечатки пальцев в качестве аргументов в apt-key, чтобы обновить их: sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keysчто дает вам:xargs -d '\n' sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys

Надеюсь, это ясно. Игнорируйте предупреждение о разборе вывода apt-key :)


0

У меня возникла аналогичная проблема, и я получил следующую ошибку при установке MongoDB 4.2 на экземпляр Ubuntu 18.04 в Google Cloud.

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

Решение, которое сработало у меня, заключалось в выполнении следующей команды для получения ключа. Я нашел это на официальных страницах выпуска Jira MongoDB.

/usr/bin/curl -sLO https://www.mongodb.org/static/pgp/server-4.2.asc && sudo /usr/bin/apt-key add server-4.2.asc

Я нашел это решение в официальных проблемах Jira MongoDB. Вот ссылка на выпуск.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.