MongoDB GPG - Tanda Tangan Tidak Valid

99

Saya menginstal MongoDB pada mesin Ubuntu 14.04, menggunakan petunjuk di: https://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

Jadi saya menjalankan:

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

Lalu:

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

Diikuti oleh:

sudo apt-get update

Saya kemudian mendapatkan peringatan berikut di akhir pembaruan:

W: Kesalahan GPG: http://repo.mongodb.org trusty / mongodb-org / 3.2 Rilis: Tanda tangan berikut tidak valid: BADSIG D68FA50FEA312927 MongoDB 3.2 Kunci Penandatanganan Rilis

Jika saya mengabaikan peringatan dan mencoba menjalankan:

sudo apt-get install -y mongodb-org

Saya mendapat:

PERINGATAN: Paket berikut tidak dapat diautentikasi!
mongodb-org-shell mongodb-org-server mongodb-org-mongos mongodb-org-tools mongodb-org E: Ada masalah dan -y digunakan tanpa --force-yes

Ada ide tentang bagaimana menyelesaikannya? Terima kasih!

Assaf Hershko
sumber
5
Kesalahan yang sama, juga 14,04 LTS
Mike
1
Masalahnya masih ada di Feb'18, dan ada solusi yang berfungsi di bawah ini, tetapi tidak diterima: stackoverflow.com/a/46737148/2273305 @ assaf-hershko, mohon pertimbangkan untuk mengubah pilihan jawaban terbaik Anda
hooke
Mengimpor kunci sesuai dokumentasi instalasi resmi di docs.mongodb.com/v3.6/tutorial/install-mongodb-on-ubuntu bekerja untuk saya. Mulai 2019-06-10 perintah yang harus dijalankan adalahsudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
Eborbob

Jawaban:

286

Perbarui semua kunci yang kedaluwarsa dari server kunci Ubuntu dalam satu perintah:

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

Penjelasan perintah:

  1. sudo apt-key list - daftar semua kunci yang dipasang di sistem;
  2. grep "expired: " - tinggalkan hanya baris dengan kunci kadaluwarsa;
  3. sed -ne 's|pub .*/\([^ ]*\) .*|\1|gp' - mengekstrak kunci;
  4. xargs -n1 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys - memperbarui kunci dari server kunci Ubuntu dengan yang kedaluwarsa ditemukan.

Sumber

dlopatin.dll
sumber
2
Ini bekerja dengan baik di Mint. Catatan: Argumen untuk --recv-keyadalah kunci kedaluwarsa.
not2qubit
Luar biasa, terima kasih banyak, ini memecahkan masalah serupa yang saya alami dengan aplikasi lain juga. Saya perlu menyimpan ini di file untuk digunakan di masa mendatang.
Yomi
12
Bagi siapa pun yang melihat ini bertahun-tahun kemudian dari "solusi yang diterima", ini adalah perbaikan yang paling sederhana.
Nicholi
1
Inilah solusinya! @ assaf-hershko, mohon pertimbangkan untuk mengubah solusi yang diterima untuk yang satu ini!
hooke
9
Ini sepertinya tidak berfungsi lagi, karena format dari apt-key listtidak lagi kompatibel dengan perintah dalam jawaban yang memprosesnya. Sebaliknya, lari sudo apt-key list | grep -A 1 expired. Salin sidik jari 40 digit hex. Selanjutnya, jalankan perintah di sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $FINGERPRINTmana $FINGERPRINTnilai yang Anda salin (jika berisi spasi, beri tanda kutip di sekitarnya).
Laurence Gonsalves
48

Sepertinya Anda perlu mengulangi langkah-langkah instalasi untuk MongoDB. Pertama, hapus file repositori yang ada untuk MongoDB. Lakukan seperti di bawah ini.

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

Selanjutnya, tambahkan kunci: (tanpa kunci, repositori tidak akan dimuat).

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

Sekarang, buat file daftar repositori MongoDB baru:

$ 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

Setelah menambahkan detail repositori, kita perlu memperbarui daftar paket.

$ sudo apt-get update

Sekarang instal MongoDB.

sudo apt install mongodb-org

Semoga ini membantu !

PyDevSRS
sumber
Terima kasih @Tiziano. Saya senang Anda mendapatkan solusinya.
PyDevSRS
5
Satu-satunya langkah yang diperlukan adalah impor ulang kunci: sudo apt-key adv --keyserver hkp: //keyserver.ubuntu.com: 80 --recv EA312927
Ben McCann
Bekerja untuk saya juga. Saya pikir seperti yang dikatakan Ben, impor kembali adalah kunci dari kunci tersebut.
James O'Brien
Mendapatkan E: Tidak dapat menemukan paket mongodb-org
Muhammed Hafil
25

Anda tidak perlu menginstal ulang paket mongo, tetapi cukup ubah kunci sebagai berikut:

Buat daftar kunci untuk mengonfirmasi kedaluwarsa:

apt-key list | grep "expired:"

Ganti kuncinya:

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

Nomor 0xd68fa50fea312927 adalah id kunci valid saat ini (kedaluwarsa pada 2019-10-09), seperti yang dapat Anda periksa di sini .

Juliano ENS
sumber
1
Ini sangat membantu saya.
Anil Chaudhari
Saya rasa ini adalah metode yang dijelaskan lebih detail di sini: futurestud.io/tutorials/… . Ini berhasil untuk saya.
Otak Kecil
9

Tampaknya versi 3.2.1 telah dirilis pada 11 / Jan / 2016, dan tanda tangan paket buruk sejak saat ini. Tanda tangan paket baik-baik saja sehari sebelumnya.

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

Anda dapat menambahkan opsi --force-yes, atau menunggu beberapa jam sampai tim mongodb melihat dan memperbaiki masalahnya.

Sudah ada tiket di sana: https://jira.mongodb.org/browse/SERVER-22144

themr0c
sumber
1
Saya menggunakan --force-yes, apakah ada risiko yang saya ambil dengan solusi ini?
Lam
1
Maret 2016, belum diperbaiki.
retrografi
8
Masih di bulan Oktober 2017
Aitor Aznar Álvarez
4
Januari 2018, masih ada.
Kostanos
3
dan masih di bulan Maret 2018
Waqas Malik
9

Saya juga menghadapi masalah ini saat menginstal MongoDB 4.0 di Ubuntu 16.04. Jadi saya lakukan.

  1. sudo rm /etc/apt/sources.list.d/mongodb*.list - hapus semua file yang ada untuk MongoDB

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

  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' - buat file daftar repositori MongoDB baru

Sekarang, Selesaikan instalasi dengan pembaruan repositori lalu instal MongoDB, aktifkan mongodlayanan dan mulai, dan terakhir, periksa versi MongoDB Anda:

sudo apt update
sudo apt install mongodb-org

systemctl enable mongod.service
systemctl start mongod.service

mongo --version
Pengembang Fullstack
sumber
Tampaknya masalah terpecahkan hanya dengan langkah # 2, mengimpor kunci publik di penyimpanan kunci ubuntu. Terima kasih atas jawabannya!
Anand Vaidya
7

Saya juga menghadapi masalah ini saat menginstal MongoDB 3.2 di ubuntu 16.04 saya menggunakan perintah di bawah ini. Solusi di bawah ini disediakan sebagai pertanyaan terkait dengan instalasi v3.2 dari MongoDB

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

Setelah menjalankan perintah update di atas, saya menemukan peringatan berikut

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.

Pada penyelidikan lebih lanjut menggunakan perintah di bawah ini untuk mendaftar semua kunci

sudo apt-key list

Ini menunjukkan bahwa kunci saat ini berakhir pada 2017-10-08

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

Ini juga masuk akal karena MongoDB Current Stable Release sekarang (3.4.9).

Untuk memperbaiki masalah ini, pertama kami melakukan pembersihan kecil (opsional)

  1. kami menghapus kunci lama yang ditambahkan

    sudo apt-key list // Cantumkan semua kunci

    sudo apt-key del EA312927 // Temukan uid kunci yang akan dihapus

    daftar kunci-tepat | grep Mongodb // Verifikasi apakah sudah dihapus

  2. Sekarang kami menghapus repo MongoDB yang ditambahkan di /etc/apt/sources.list.d

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

  3. Sekarang kami menginstal versi stabil terbaru dari MongoDB (3.4.9) menggunakan perintah di bawah ini

Impor Kunci Publik yang digunakan oleh Manajer Paket Ubuntu

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

Buat daftar file untuk mongoDB untuk mengambil repositori saat ini

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

Instal MongoDB

sudo apt-get update
sudo apt-get install mongodb-org
nshah143
sumber
3

Saya memiliki masalah yang sama, dan menyelesaikannya dengan menginstal mongodb dengan metode tarball. Lihat tautan di bawah untuk detailnya.

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

Menambahkan detail di bawah

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

  5. lalu jalankan mongod (jalur db mungkin perlu diatur)

Harrison Hyunmin Cho
sumber
1
Memberikan tautan itu bagus, tetapi coba jelaskan solusinya di sini
Nehal
1
Saya bisa melakukannya, tetapi tautan itu sendiri menjelaskan cukup detail, jadi saya pikir itu tidak perlu ..
Harrison Hyunmin Cho
2

Sebenarnya berikut ini sangat penting untuk mengatasi masalah tersebut

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

Saya memiliki masalah yang sama, jadi saya lakukan:

root@skarabi:~# apt remove mongodb-org

Kemudian:

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

Sesudah:

root@skarabi:~# apt update

Zineb SKARABI
sumber
Itu hanya akan menghapus repositori MongoDB dari mesin Anda, bukan? Bagaimana Anda akan menginstalnya?
Colin Nicholson
dan kemudian menginstalnya, Anda dapat memeriksa tautan ini: docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu Bahkan ada kunci GPG. Ini bekerja dengan saya
Zineb SKARABI
Ini berbahaya dan buruk. Tidak ada alasan untuk apt remove(menghapus) Mongo dari mesin Anda hanya untuk mendapatkan kunci terbaru. Anda akan menghancurkan seluruh database Anda hanya untuk mencoba menarik kunci yang diperbarui untuk sumber apt.
BoomShadow
1

Menggunakan jawaban dlopatin, saya membuat ini untuk Ubuntu 18.04 karena kode itu tidak berfungsi lagi:

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. Daftar kunci sudo apt-key list
  2. Dapatkan yang kedaluwarsa dan cetak baris berikutnya dengan sidik jari grep -A 1 "\[expired:"
  3. Gunakan sed untuk mengekstrak hanya baris yang dimulai dengan spasi ^\s\{1,10\}, dan pilih karakter alfanumerik \(\w*\), ganti baris tersebut dengan grup yang dipilih yaitu sidik jari \1, ulangi untuk semua baris yang dikembalikan g, lalu cetak sidik jari p. Itu memberi:sed -ne 's|^\s\{1,10\}\(\w*\)|\1|gp'
  4. Gunakan xargs dengan pembatas untuk '\ n' jika tidak maka akan merusak spasi:, xargs -d '\n'lalu teruskan sidik jari sebagai argumen ke apt-key untuk memperbaruinya: sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keysyang memberi Anda:xargs -d '\n' sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys

Mudah-mudahan itu jelas. Abaikan peringatan tentang penguraian keluaran apt-key :)

Marlon
sumber
0

Saya mengalami masalah yang sama dan mendapatkan kesalahan berikut saat menginstal MongoDB 4.2 pada instance Ubuntu 18.04 di 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

Solusi yang berhasil dari saya adalah menjalankan perintah berikut untuk mendapatkan kuncinya. Saya menemukan ini di Halaman Masalah Jira resmi 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

Saya menemukan solusi ini dalam masalah Jira resmi MongoDB. Berikut ini tautan ke masalah tersebut.

aidon
sumber