MongoDB GPG - nieprawidłowe podpisy

99

Instaluję MongoDB na komputerze z systemem Ubuntu 14.04, korzystając z instrukcji pod adresem : https://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

Więc biegnę:

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

I wtedy:

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

Śledzony przez:

sudo apt-get update

Pod koniec aktualizacji otrzymuję następujące ostrzeżenie:

W: Błąd GPG: http://repo.mongodb.org trusty / mongodb-org / 3.2 Wydanie: Następujące podpisy były nieprawidłowe: BADSIG D68FA50FEA312927 MongoDB 3.2 Klucz do podpisywania wydania

Jeśli zignoruję ostrzeżenie i spróbuję uruchomić:

sudo apt-get install -y mongodb-org

Dostaję:

OSTRZEŻENIE: Poniższe pakiety nie mogą zostać uwierzytelnione!
mongodb-org-shell mongodb-org-server mongodb-org-mongos mongodb-org-tools mongodb-org E: Wystąpiły problemy i -y zostało użyte bez --force-yes

Jakieś pomysły, jak rozwiązać? Dzięki!

Assaf Hershko
źródło
5
Ten sam błąd, także 14.04 LTS
Mike
1
Problem nadal występuje w lutym 18, a poniżej jest działające rozwiązanie, ale nie zaakceptowane: stackoverflow.com/a/46737148/2273305 @ assaf-hershko, rozważ zmianę wyboru najlepszej odpowiedzi
hooke
Importowanie kluczy zgodnie z oficjalną dokumentacją instalacji na docs.mongodb.com/v3.6/tutorial/install-mongodb-on-ubuntu działało dla mnie. Od 10.06.2019 polecenie do uruchomienia tosudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
Eborbob

Odpowiedzi:

286

Zaktualizuj wszystkie wygasłe klucze z serwera kluczy Ubuntu jednym poleceniem:

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

Objaśnienie polecenia:

  1. sudo apt-key list - wyświetla listę wszystkich kluczy zainstalowanych w systemie;
  2. grep "expired: " - zostaw tylko linie z wygasłymi kluczami;
  3. sed -ne 's|pub .*/\([^ ]*\) .*|\1|gp' - wyciąga klucze;
  4. xargs -n1 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys - aktualizuje klucze z serwera kluczy Ubuntu według znalezionych wygasłych.

Źródło

dlopatin
źródło
2
To działało świetnie na Mint. Uwaga: argumentem --recv-keyjest wygasły klucz.
not2qubit
Niesamowite, dziękuję bardzo, rozwiązało podobne problemy, które miałem z innymi aplikacjami. Muszę to zapisać w pliku do wykorzystania w przyszłości.
Yomi
12
Dla każdego, kto zobaczy to po latach z „przyjętego rozwiązania”, jest to najprostsza poprawka.
Nicholi
1
To jest rozwiązanie! @ assaf-hershko, rozważ zmianę przyjętego rozwiązania na to!
hooke,
9
Wydaje się, że to już nie działa, ponieważ format apt-key listnie jest już zgodny z poleceniami w tej odpowiedzi, które ją przetwarzają. Zamiast tego biegnij sudo apt-key list | grep -A 1 expired. Skopiuj 40-cyfrowy odcisk palca. Następnie uruchom polecenie, w sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $FINGERPRINTktórym $FINGERPRINTjest skopiowana wartość (jeśli zawiera spacje, umieść ją w cudzysłowie).
Laurence Gonsalves
48

Wygląda na to, że musisz powtórzyć kroki instalacji dla MongoDB. Najpierw usuń istniejący plik repozytorium dla MongoDB. Zrób jak poniżej.

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

Następnie dodaj klucz: (bez klucza repozytorium się nie załaduje).

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

Teraz utwórz nowy plik listy repozytoriów 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

Po dodaniu szczegółów repozytorium musimy zaktualizować listę pakietów.

$ sudo apt-get update

Teraz zainstaluj MongoDB.

sudo apt install mongodb-org

Mam nadzieję że to pomoże !

PyDevSRS
źródło
Dziękuję @Tiziano. Cieszę się, że masz rozwiązanie.
PyDevSRS
5
Jedynym krokiem, który jest potrzebny, jest ponowny import klucza: sudo apt-key adv --keyserver hkp: //keyserver.ubuntu.com: 80 --recv EA312927
Ben McCann
U mnie też zadziałało. Myślę, że jak stwierdził Ben, kluczem do klucza jest ponowny import.
James O'Brien
Pobieranie E: nie można zlokalizować pakietu mongodb-org
Muhammed Hafil
25

Nie musisz ponownie instalować pakietów mongo, po prostu zmień klucz w następujący sposób:

Wymień klucze, aby potwierdzić, że wygasło:

apt-key list | grep "expired:"

Wymień klucz:

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

Numer 0xd68fa50fea312927 to aktualny prawidłowy identyfikator klucza (wygasa w 2019-10-09), jak możesz sprawdzić tutaj .

Juliano ENS
źródło
1
To naprawdę mi pomogło.
Anil Chaudhari,
Myślę, że jest to metoda wyjaśniona bardziej szczegółowo tutaj: futurestud.io/tutorials/… . To zadziałało dla mnie.
Little Brain
9

Wygląda na to, że wersja 3.2.1 została wydana 11 stycznia 2016 r. I od tego momentu sygnatura pakietów jest zła. Podpis na paczkach był w porządku dzień wcześniej.

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

Możesz dodać opcję --force-yes lub poczekać kilka godzin, aż zespół mongodb zobaczy i naprawi problem.

Tam jest już bilet: https://jira.mongodb.org/browse/SERVER-22144

themr0c
źródło
1
Użyłem --force - tak, czy istnieje ryzyko, które podejmuję z tym rozwiązaniem?
Lam
1
Marzec 2016, nie został jeszcze naprawiony.
retrografia
8
Jeszcze w październiku 2017
Aitor Aznar Álvarez
4
Styczeń 2018, nadal to mam.
Kostanos
3
i jeszcze w marcu 2018
Waqas Malik
9

Miałem również do czynienia z tym problemem podczas instalowania MongoDB 4.0 na Ubuntu 16.04. Więc zrobiłem.

  1. sudo rm /etc/apt/sources.list.d/mongodb*.list - usuń istniejący plik dla MongoDB

  2. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E52529D4 - dodaj klucz

  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' - utwórz nowy plik listy repozytoriów MongoDB

Teraz zakończ instalację aktualizacją repozytoriów, a następnie zainstaluj MongoDB, włącz mongodusługę i uruchom ją, a na koniec sprawdź wersję MongoDB:

sudo apt update
sudo apt install mongodb-org

systemctl enable mongod.service
systemctl start mongod.service

mongo --version
Fullstack Developer
źródło
Najwyraźniej problem został rozwiązany w zaledwie kroku 2, importując klucz publiczny do magazynu kluczy Ubuntu. Dziękuję za odpowiedź!
Anand Vaidya
7

Napotkałem również ten problem podczas instalowania MongoDB 3.2 na moim ubuntu 16.04 za pomocą poniższych poleceń. Poniższe rozwiązanie zostało przedstawione jako pytanie związane z instalacją MongoDB w wersji 3.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

Po uruchomieniu powyższego polecenia aktualizacji znalazłem następujące ostrzeżenia

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.

Dalsze badanie za pomocą poniższego polecenia, aby wyświetlić listę wszystkich kluczy

sudo apt-key list

Pokazuje, że aktualny klucz wygasł w dniu 2017-10-08

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

Miało to również sens, ponieważ obecna stabilna wersja MongoDB jest teraz (3.4.9).

Aby najpierw rozwiązać problem, wykonujemy małe porządki (opcjonalnie)

  1. usuwamy stary dodany klucz

    sudo apt-key list // Wyświetl wszystkie klucze

    sudo apt-key del EA312927 // Znajdź identyfikator UID klucza do usunięcia

    lista kluczy apt | grep Mongodb // Sprawdź, czy został usunięty

  2. Teraz usuwamy repozytorium MongoDB dodane w /etc/apt/sources.list.d

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

  3. Teraz instalujemy najnowszą stabilną wersję MongoDB (3.4.9) za pomocą poniższych poleceń

Zaimportuj klucz publiczny używany przez Menedżera pakietów Ubuntu

apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

Utwórz listę plików dla mongoDB, aby pobrać bieżące repozytorium

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

Zainstaluj MongoDB

sudo apt-get update
sudo apt-get install mongodb-org
nshah143
źródło
3

Miałem ten sam problem i rozwiązałem go, instalując mongodb metodą tarballa. Aby uzyskać szczegółowe informacje, skorzystaj z poniższego łącza.

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

Dodawanie szczegółów poniżej

  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. export PATH = / bin: $ PATH

  5. następnie uruchom mongod (może być konieczne ustawienie ścieżki db)

Harrison Hyunmin Cho
źródło
1
Podanie linków jest dobre, ale spróbuj wyjaśnić tutaj samo rozwiązanie
Nehal
1
Mogę to zrobić, ale sam link wyjaśnia wystarczająco dużo szczegółów, więc pomyślałem, że nie będzie to konieczne ..
Harrison Hyunmin Cho
2

W rzeczywistości bardzo ważne jest, aby rozwiązać problem

$ sudo rm /etc/apt/sources.list.d/mongodb*.list
Raymond
źródło
1

Miałem ten sam problem, więc zrobiłem:

root@skarabi:~# apt remove mongodb-org

Następnie:

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

Po :

root@skarabi:~# apt update

Zineb SKARABI
źródło
To po prostu usunie repozytoria MongoDB z twojego komputera, prawda? Jak zamierzasz wtedy zainstalować?
Colin Nicholson
a następnie zainstaluj, możesz sprawdzić pod tym linkiem: docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu Jest nawet klucz GPG. Działa ze mną
Zineb SKARABI
To jest niebezpieczne i złe. Nie ma powodu, aby apt remove(odinstalować) Mongo ze swojego komputera, aby uzyskać najnowszy klucz. Będziesz niszczyć całą bazę danych tylko po to, aby spróbować pobrać zaktualizowany klucz do źródeł apt.
BoomShadow
1

Korzystając z odpowiedzi dlopatin, wymyśliłem to dla Ubuntu 18.04, ponieważ ten kod już nie działa:

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. Lista kluczy sudo apt-key list
  2. Zdobądź ten, który wygasł i wydrukuj następny wiersz z odciskiem palca grep -A 1 "\[expired:"
  3. Użyj seda, aby wyodrębnić tylko linie zaczynające się od spacji ^\s\{1,10\}i wybierz znaki alfanumeryczne \(\w*\), zamień te linie na wybraną grupę, którą jest odcisk palca \1, powtórz dla wszystkich zwróconych linii g, a następnie wydrukuj odcisk palca p. To daje:sed -ne 's|^\s\{1,10\}\(\w*\)|\1|gp'
  4. Użyj xargs z separatorem dla '\ n', w przeciwnym razie przerwie na spacje:, xargs -d '\n'a następnie przekaż odciski palców jako argumenty do apt-key, aby je zaktualizować: sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keysco daje:xargs -d '\n' sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys

Mam nadzieję, że to jasne. Zignoruj ​​ostrzeżenie o przetwarzaniu danych wyjściowych apt-key :)

Marlon
źródło
0

Doświadczyłem podobnego problemu i otrzymałem następujący błąd podczas instalowania MongoDB 4.2 na wystąpieniu Ubuntu 18.04 w 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

Rozwiązaniem, które zadziałało ode mnie, było uruchomienie następującego polecenia, aby uzyskać klucz. Znalazłem to na oficjalnych stronach problemów Jira w 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

Znalazłem to rozwiązanie w oficjalnych wydaniach Jira MongoDB. Oto link do problemu.

aidon
źródło