MongoDB GPG - Chữ ký không hợp lệ


98

Tôi đang cài đặt MongoDB trên máy Ubuntu 14.04, sử dụng hướng dẫn tại: https://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

Vì vậy, tôi chạy:

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

Và sau đó:

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

Theo dõi bởi:

sudo apt-get update

Sau đó, tôi nhận được cảnh báo sau ở cuối bản cập nhật:

W: Lỗi GPG: http://repo.mongodb.org trusty / mongodb-org / 3.2 Bản phát hành: Các chữ ký sau không hợp lệ: BADSIG D68FA50FEA312927 Khoá ký phát hành MongoDB 3.2

Nếu tôi bỏ qua cảnh báo và cố gắng chạy:

sudo apt-get install -y mongodb-org

Tôi có:

CẢNH BÁO: Không thể xác thực các gói sau!
mongodb-org-shell mongodb-org-server mongodb-org-mongos mongodb-org-tools mongodb-org E: Có vấn đề và -y đã được sử dụng mà không có --force-yes

Bất kỳ ý tưởng về cách giải quyết? Cảm ơn!


5
Cùng một lỗi, cũng 14.04 LTS
Mike

1
Vấn đề vẫn còn ở đây vào tháng 2 năm 18 và có giải pháp hoạt động bên dưới, nhưng không được chấp nhận: stackoverflow.com/a/46737148/2273305 @ assaf-hershko, vui lòng xem xét thay đổi lựa chọn câu trả lời hay nhất của bạn
hooke

Nhập khóa theo tài liệu cài đặt chính thức tại docs.mongodb.com/v3.6/tutorial/install-mongodb-on-ubuntu đã làm việc cho tôi. Kể từ ngày sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
Eborbob

Câu trả lời:


286

Cập nhật tất cả các khóa đã hết hạn từ máy chủ khóa Ubuntu trong một lệnh:

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

Giải thích lệnh:

  1. sudo apt-key list - liệt kê tất cả các khóa được cài đặt trong hệ thống;
  2. grep "expired: " - chỉ để lại các dòng có khóa hết hạn;
  3. sed -ne 's|pub .*/\([^ ]*\) .*|\1|gp' - trích xuất các khóa;
  4. xargs -n1 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys - cập nhật các khóa từ máy chủ khóa Ubuntu bằng những khóa đã hết hạn.

Nguồn


2
Điều này làm việc tuyệt vời trên Mint. Lưu ý: Đối số cho --recv-keylà khóa đã hết hạn.
not2qubit

Thật tuyệt vời, cảm ơn bạn rất nhiều, nó cũng giải quyết được các vấn đề tương tự mà tôi gặp phải với các ứng dụng khác. Tôi cần lưu nó vào một tệp để sử dụng trong tương lai.
Yomi

12
Đối với bất kỳ ai nhìn thấy điều này nhiều năm sau từ "giải pháp được chấp nhận", đây là cách khắc phục đơn giản nhất.
Nicholi

1
Đây là giải pháp! @ assaf-hershko, vui lòng xem xét thay đổi giải pháp được chấp nhận cho giải pháp này!
hooke

9
Điều này dường như không hoạt động nữa, vì định dạng của apt-key listkhông còn tương thích với các lệnh trong câu trả lời này xử lý nó. Thay vào đó, hãy chạy sudo apt-key list | grep -A 1 expired. Sao chép dấu vân tay gồm 40 chữ số. Tiếp theo, chạy lệnh sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $FINGERPRINTtrong đó $FINGERPRINTlà giá trị bạn đã sao chép (nếu nó chứa khoảng trắng, hãy đặt dấu ngoặc kép xung quanh nó).
Laurence Gonsalves

48

Có vẻ như bạn cần thực hiện lại các bước cài đặt MongoDB. Trước tiên, hãy xóa mọi tệp kho lưu trữ hiện có cho MongoDB. Làm như bên dưới.

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

Tiếp theo, thêm khóa: (không có khóa, kho lưu trữ sẽ không tải).

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

Bây giờ, hãy tạo một tệp danh sách kho lưu trữ MongoDB mới:

$ 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

Sau khi thêm chi tiết kho lưu trữ, chúng ta cần cập nhật danh sách gói.

$ sudo apt-get update

Bây giờ cài đặt MongoDB.

sudo apt install mongodb-org

Hi vọng điêu nay co ich !


Xin cảm ơn @Tiziano. Tôi rất vui vì bạn đã có giải pháp của mình.
PyDevSRS

5
Bước duy nhất cần thiết là chìa khóa tái nhập: sudo apt-key ADV --keyserver hkp: //keyserver.ubuntu.com: 80 --recv EA312927
Bến McCann

Làm việc cho tôi là tốt. Tôi nghĩ như Ben đã nói, việc nhập lại là chìa khóa then chốt.
James O'Brien,

Bắt E: Không thể xác định vị trí gói MongoDB-org
Muhammed Hafil

25

Bạn không cần phải cài đặt lại các gói mongo mà chỉ cần thay đổi khóa như sau:

Liệt kê các khóa để xác nhận nó đã hết hạn:

apt-key list | grep "expired:"

Thay thế khóa:

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

Số 0xd68fa50fea312927 là id khóa hợp lệ hiện tại (hết hạn vào ngày 10 tháng 10 năm 2019), như bạn có thể kiểm tra tại đây .


1
Điều này thực sự đã giúp tôi.
Anil Chaudhari

Tôi nghĩ rằng đây là phương pháp được giải thích chi tiết hơn ở đây: futurestud.io/tutorials/… . Điều này đã làm việc cho tôi.
Little Brain

9

Có vẻ như phiên bản 3.2.1 đã được phát hành vào ngày 11 tháng 1 năm 2016 và chữ ký của các gói đã không tốt kể từ thời điểm này. Ngày hôm trước, chữ ký của gói hàng vẫn ổn.

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

Bạn có thể thêm tùy chọn --force-yes hoặc đợi vài giờ để nhóm mongodb thấy và khắc phục sự cố.

Đã có vé ở đó: https://jira.mongodb.org/browse/SERVER-22144


1
Tôi đã sử dụng --force-yes, có rủi ro mà tôi đang gặp phải với giải pháp này không?
Lam

1
Tháng 3 năm 2016, nó vẫn chưa được sửa.
retrography

8
Vẫn vào tháng 10 năm 2017
Aitor Aznar Álvarez

4
Tháng 1 năm 2018, vẫn có nó.
Kostanos

3
và vẫn vào tháng 3 năm 2018
Waqas Malik

9

Tôi cũng gặp phải vấn đề này khi cài đặt MongoDB 4.0 trên Ubuntu 16.04. Tôi cũng vậy.

  1. sudo rm /etc/apt/sources.list.d/mongodb*.list - xóa bất kỳ tệp hiện có nào cho MongoDB

  2. sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E52529D4 - thêm chìa khóa

  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' - tạo một tệp danh sách kho lưu trữ MongoDB mới

Bây giờ, hãy hoàn tất quá trình cài đặt với bản cập nhật kho lưu trữ, sau đó cài đặt MongoDB, kích hoạt mongoddịch vụ và khởi động nó và cuối cùng, hãy kiểm tra phiên bản MongoDB của bạn:

sudo apt update
sudo apt install mongodb-org

systemctl enable mongod.service
systemctl start mongod.service

mongo --version

Gần như vấn đề được giải quyết chỉ với bước # 2, nhập khóa công khai vào kho khóa ubuntu. Cảm ơn vì câu trả lời!
Anand Vaidya

7

Tôi cũng gặp phải vấn đề này khi cài đặt MongoDB 3.2 trên ubuntu 16.04 của mình bằng các lệnh dưới đây. Giải pháp dưới đây được cung cấp dưới dạng câu hỏi liên quan đến cài đặt 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

Sau khi chạy lệnh cập nhật ở trên, tôi thấy các cảnh báo sau

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.

Khi điều tra thêm bằng cách sử dụng lệnh dưới đây để liệt kê tất cả các khóa

sudo apt-key list

Nó cho thấy rằng khóa hiện tại đã hết hạn vào ngày 10 tháng 10 năm 2017

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

Điều này cũng có ý nghĩa vì Bản phát hành ổn định hiện tại của MongoDB hiện là (3.4.9).

Để khắc phục sự cố trước tiên, chúng tôi thực hiện một đợt dọn dẹp nhỏ (tùy chọn)

  1. chúng tôi xóa khóa cũ đã thêm

    sudo apt-key list // Liệt kê tất cả các khóa

    sudo apt-key del EA312927 // Tìm uid của khóa sẽ bị xóa

    danh sách apt-key | grep Mongodb // Xác minh nếu nó bị xóa

  2. Bây giờ chúng tôi xóa repo MongoDB được thêm vào /etc/apt/sources.list.d

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

  3. Bây giờ chúng tôi cài đặt phiên bản ổn định mới nhất của MongoDB (3.4.9) bằng cách sử dụng các lệnh dưới đây

Nhập khóa công khai được sử dụng bởi Trình quản lý gói Ubuntu

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

Tạo danh sách tệp cho mongoDB để tìm nạp kho lưu trữ hiện tại

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

Cài đặt MongoDB

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

3

Tôi đã gặp vấn đề tương tự và đã giải quyết nó bằng cách cài đặt mongodb với phương thức tarball. Tham khảo chi tiết liên kết bên dưới.

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

Thêm chi tiết bên dưới

  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. xuất PATH = / bin: $ PATH

  5. sau đó chạy mongod (đường dẫn db có thể cần được đặt)


1
Liên kết cung cấp là tốt, nhưng cố gắng giải thích các giải pháp ở đây chính
Nehal

1
Tôi có thể làm điều đó, nhưng liên kết bản thân giải thích đủ chi tiết, vì vậy tôi nghĩ rằng nó sẽ không cần thiết ..
Harrison Hyunmin Cho

2

Trên thực tế, những điều sau đây là rất quan trọng để giải quyết vấn đề

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

1

Tôi đã gặp vấn đề tương tự, vì vậy tôi đã làm:

root@skarabi:~# apt remove mongodb-org

Sau đó:

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

Sau :

root@skarabi:~# apt update


Điều đó sẽ chỉ xóa kho lưu trữ MongoDB khỏi máy tính của bạn phải không? Sau đó bạn sẽ cài đặt như thế nào?
Colin Nicholson

và sau đó cài đặt nó, bạn có thể kiểm tra trên liên kết này: docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu Thậm chí còn có cả khóa GPG. Nó hoạt động với tôi
Zineb SKARABI

Điều này thật nguy hiểm và tồi tệ. Không có lý do gì để apt remove(gỡ cài đặt) Mongo khỏi máy của bạn chỉ đơn giản là để lấy khóa mới nhất. Bạn sẽ phá hủy toàn bộ cơ sở dữ liệu của mình chỉ để cố gắng lấy một khóa cập nhật cho các nguồn apt.
BoomShadow

1

Sử dụng câu trả lời của dlopatin, tôi đã nghĩ ra điều này cho Ubuntu 18.04 vì mã đó không hoạt động nữ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. Liệt kê các khóa sudo apt-key list
  2. Lấy một cái đã hết hạn và in dòng tiếp theo với dấu vân tay grep -A 1 "\[expired:"
  3. Sử dụng sed để chỉ trích xuất các dòng bắt đầu bằng dấu cách ^\s\{1,10\}và chọn các ký tự chữ và số \(\w*\), thay thế các dòng đó bằng nhóm đã chọn là dấu vân tay \1, lặp lại cho tất cả các dòng trả về g, sau đó in dấu vân tay p. Điều đó mang lại:sed -ne 's|^\s\{1,10\}\(\w*\)|\1|gp'
  4. Sử dụng xargs với dấu phân cách cho '\ n' nếu không nó sẽ ngắt trên dấu cách:, xargs -d '\n'sau đó chuyển các dấu vân tay làm đối số cho apt-key để cập nhật chúng: sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keysđiều này cung cấp cho bạn:xargs -d '\n' sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys

Hy vọng rằng điều đó là rõ ràng. Bỏ qua cảnh báo về phân tích cú pháp đầu ra apt-key :)


0

Tôi đã gặp sự cố tương tự và gặp lỗi sau khi cài đặt MongoDB 4.2 trên phiên bản Ubuntu 18.04 trên 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

Giải pháp hiệu quả với tôi là chạy lệnh sau để lấy khóa. Tôi tìm thấy điều này trên các Trang phát hành Jira chính thức của 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

Tôi đã tìm thấy giải pháp này trong các vấn đề Jira chính thức của MongoDB. Đây là liên kết đến vấn đề.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.