MongoDB GPG - ลายเซ็นไม่ถูกต้อง


101

ฉันกำลังติดตั้ง 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 รีลีส: ลายเซ็นต่อไปนี้ไม่ถูกต้อง: 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
Mike

1
ปัญหายังคงอยู่ที่นี่ในวันที่ 18 กุมภาพันธ์และมีวิธีแก้ไขปัญหาด้านล่าง แต่ไม่ได้รับการยอมรับอย่างใดอย่างหนึ่ง: stackoverflow.com/a/46737148/2273305 @ assaf-hershko โปรดพิจารณาเปลี่ยนตัวเลือกคำตอบที่ดีที่สุด
hooke

การนำเข้าคีย์ตามเอกสารการติดตั้งอย่างเป็นทางการที่docs.mongodb.com/v3.6/tutorial/install-mongodb-on-ubuntu ใช้ได้ผลสำหรับฉัน ณ วันที่ 2019-06-10 คำสั่งที่จะรันคือsudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
Eborbob

คำตอบ:


289

อัปเดตคีย์ที่หมดอายุทั้งหมดจากเซิร์ฟเวอร์คีย์ของ 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

เยี่ยมมากขอบคุณมากมันแก้ไขปัญหาที่คล้ายกันกับแอปพลิเคชันอื่น ๆ เช่นกัน ฉันต้องการบันทึกสิ่งนี้ลงในไฟล์เพื่อใช้ในอนาคต
Yomi

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ค่าที่คุณคัดลอกมาอยู่ที่ใด (หากมีช่องว่างให้ใส่เครื่องหมายคำพูดไว้รอบ ๆ )
Laurence Gonsalves

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
Ben McCann

ทำงานให้ฉันเช่นกัน ฉันคิดว่าตามที่เบ็นกล่าวการนำเข้าใหม่เป็นกุญแจสำคัญ
James O'Brien

รับ E: ไม่พบแพ็คเกจ mongodb-org
Muhammed Hafil

26

คุณไม่จำเป็นต้องติดตั้งแพ็คเกจ mongo ใหม่ แต่เพียงแค่เปลี่ยนคีย์ดังต่อไปนี้:

ระบุคีย์เพื่อยืนยันว่าหมดอายุ:

apt-key list | grep "expired:"

เปลี่ยนคีย์:

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

จำนวน 0xd68fa50fea312927 คือ ID ที่สำคัญในปัจจุบันที่ถูกต้อง (หมดอายุ 2019/10/09) เช่นคุณสามารถตรวจสอบได้ที่นี่


1
สิ่งนี้ช่วยฉันได้จริงๆ
Anil Chaudhari

ฉันคิดว่านี่เป็นวิธีการที่อธิบายรายละเอียดเพิ่มเติมที่นี่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

คุณสามารถเพิ่มตัวเลือก - บังคับ - ใช่หรือรอสองสามชั่วโมงที่ทีม mongodb เห็นและแก้ไขปัญหาได้

มีตั๋วอยู่แล้ว: https://jira.mongodb.org/browse/SERVER-22144


1
ฉันใช้ - บังคับ - ใช่ฉันกำลังรับความเสี่ยงกับโซลูชันนี้หรือไม่
ลำ

1
เดือนมีนาคม 2559 ยังไม่ได้รับการแก้ไข
retrography

8
ยังคงอยู่ในเดือนตุลาคม 2017
Aitor Aznar Álvarez

4
มกราคม 2561 ยังมีเลย
Kostanos

3
และยังคงอยู่ในเดือนมีนาคม 2018
Waqas Malik

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 key-store ขอบคุณสำหรับคำตอบ!
Anand Vaidya

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 Current Stable Release คือ (3.4.9)

ในการแก้ไขปัญหาก่อนอื่นให้ทำการล้างข้อมูลเล็กน้อย (ไม่บังคับ)

  1. เราลบคีย์เก่าที่เพิ่ม

    sudo apt-key list // แสดงรายการคีย์ทั้งหมด

    sudo apt-key del EA312927 // ค้นหา uid ของคีย์ที่จะลบ

    รายการ apt-key | grep Mongodb // ตรวจสอบว่าถูกลบหรือไม่

  2. ตอนนี้เราลบ MongoDB repo ที่เพิ่มใน /etc/apt/sources.list.d

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

  3. ตอนนี้เราติดตั้ง MongoDB เวอร์ชันเสถียรล่าสุด (3.4.9) โดยใช้คำสั่งด้านล่าง

นำเข้าคีย์สาธารณะที่ใช้โดย Ubuntu Package Manager

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. ขด -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 (อาจต้องตั้งค่าพา ธ db)


1
การให้ลิงก์เป็นสิ่งที่ดี แต่พยายามอธิบายวิธีแก้ปัญหาที่นี่
Nehal

1
ฉันทำได้ แต่ลิงค์อธิบายรายละเอียดได้เพียงพอดังนั้นฉันคิดว่ามันคงไม่จำเป็น ..
แฮริสันฮยอนมิ


1

ฉันมีปัญหาเดียวกันดังนั้นฉันจึงทำ:

root@skarabi:~# apt remove mongodb-org

จากนั้น:

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

หลังจาก:

root@skarabi:~# apt update


นั่นจะเป็นการลบที่เก็บ MongoDB ออกจากเครื่องของคุณจะไม่? คุณจะติดตั้งอย่างไร?
Colin Nicholson

จากนั้นติดตั้งคุณสามารถตรวจสอบได้ที่ลิงค์นี้: docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu มีแม้แต่คีย์ GPG ได้ผลกับฉัน
Zineb SKARABI

นี่เป็นอันตรายและไม่ดี ไม่มีเหตุผลที่จะ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

วิธีแก้ปัญหาที่ได้ผลจากฉันกำลังเรียกใช้คำสั่งต่อไปนี้เพื่อรับคีย์ ฉันพบสิ่งนี้ใน MongoDB official Jira Issue Pages

/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 นี่คือลิงก์ไปยังปัญหา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.