บังคับการอัปเดตจากที่เก็บที่ไม่ได้ลงชื่อ


63

ฉันใช้ repo ที่ไม่ได้ลงชื่อใน Ubuntu 16.04 จากมัลติมีเดีย Debian:

deb http://www.deb-multimedia.org jessie main

ในการติดตั้งdeb-multimedia-keyringฉันกำลังทำงาน:

apt-get update && apt-get install deb-multimedia-keyring -y

สิ่งนี้ทำให้เกิดข้อผิดพลาด:

W: GPG error: http://www.deb-multimedia.org jessie InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5C808C2B65558117
E: The repository 'http://www.deb-multimedia.org jessie InRelease' 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.

คำตอบ:


40

คุณสามารถข้ามการป้องกันที่สำคัญบางอย่างได้โดยใช้ตัวเลือกต่อไปนี้:

--allow-unauthenticated

จาก man pages สำหรับ apt-get:

--allow-unauthenticated
    Ignore if packages can't be authenticated and don't prompt about
    it. This can be useful while working with local repositories, but
    is a huge security risk if data authenticity isn't ensured in
    another way by the user itself. The usage of the Trusted option for
    sources.list(5) entries should usually be preferred over this
    global override. Configuration Item:
    APT::Get::AllowUnauthenticated.

แต่ควรระมัดระวังเกี่ยวกับการใช้ตัวเลือกนี้อย่างกว้างขวางยิ่งขึ้นมาตรการป้องกันอยู่ในตำแหน่งที่ปกป้องคอมพิวเตอร์ของคุณไม่จำกัดเสรีภาพของคุณ ...


1
ฉันใช้งานRaspbian stretchและใช้งานได้แม้มีตัวเลือกที่E: The repository 'http://ftp.de.debian.org/debian testing InRelease' is not signed.ฉันต้องการอัพเกรดจาก python 3.5 t 3.6
Timo

2
บอกฉันว่า "ตัวเลือกนี้ไม่สามารถตีความพร้อมกับตัวเลือกอื่น ๆ " เมื่อดำเนินการsudo apt-get update --allow-unauthenticated
Xerus

26
หมายเหตุ: สิ่งนี้ดูเหมือนว่าจะไม่ทำงานใน Ubuntu 18.04 ตั้งแต่กรกฎาคม 2018 อีกต่อไป
Jay Taylor

@ JayTaylor: ฉันเพิ่งเปิดเครื่องเสมือนจริงใหม่สำหรับ 18.04 และฟังก์ชั่นคำสั่งที่นี่สมบูรณ์ดี Pastebin ที่นี่: pastebin.com/ygLTnP1C
andrew.46

2
ที่น่าสนใจ; อาจจะมีสิ่งอื่นที่แตกต่างจากเครื่องที่ฉันลองจากด้านหลังข้อผิดพลาดที่ฉันสังเกตเห็น ไม่ว่าในกรณีใดการเพิ่ม[trusted=yes]เขตข้อมูลลงในรายการแหล่งที่มานั้นใช้งานได้ ขอบคุณสำหรับความขยันของคุณ @ andrew.46 :)
Jay Taylor

61

คุณสามารถตั้งค่าตัวเลือกในsources.list(อยู่ที่/etc/apt/sources.list):

deb [trusted=yes] http://www.deb-multimedia.org jessie main

ตัวเลือกที่เชื่อถือได้คือสิ่งที่จะปิดการตรวจสอบ GPG ดูman 5 sources.listรายละเอียดที่

คุณสามารถแก้ไขไฟล์ภายในเทอร์มินัลด้วย vim (หรืออะไรก็ได้ที่คุณต้องการ) หรือโปรแกรมแก้ไขอื่นที่ไม่ใช่เทอร์มินัลเช่น gedit


เราจะเข้าถึงsources.listจากขั้วได้อย่างไร
fuzzi

1
/etc/apt/sources.listมันตั้งอยู่ใน คุณสามารถแก้ไขภายในเทอร์มินัลด้วย vim (หรืออะไรก็ได้ที่คุณต้องการ) หรือโปรแกรมแก้ไขอื่น ๆ ที่ไม่ใช่เทอร์มินัลเช่น gedit
Prathu Baronia

8

อีกวิธีแก้ไขปัญหาทั่วไปคือ

sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 5C808C2B65558117

หมายเหตุ: ฉันไม่ได้ทดสอบโซลูชันด้วยที่เก็บนี้ แต่ฉันทำกับที่เก็บ Skype และทำงานได้ดี

โซลูชันอื่นสำหรับกรณีของคุณคือการติดตั้งคีย์

wget http://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2012.05.05_all.deb -O deb-multimedia-keyring.deb
sudo dpkg -i multimedia-keyring_all.deb

ตามที่อธิบายไว้ในเต็มเดินผ่านที่นี่


3

หากคุณพยายามรับแพ็กเกจจากที่เก็บซึ่งบรรจุคีย์ไว้และรวมไว้ในที่เก็บและไม่มีที่อื่นมันน่ารำคาญมากที่จะดาวน์โหลดและติดตั้งแพ็กเกจคีย์ / พวงกุญแจโดยใช้ dpkg และยากมากที่จะทำเช่นนั้น ในลักษณะที่สามารถสคริปต์และทำซ้ำได้อย่างง่ายดาย

ไม่แนะนำให้ใช้สคริปต์ด้านล่างหากคุณสามารถติดตั้งคีย์จาก keyserver (ตามที่แนะนำในคำตอบอื่นโดยใช้apt-key adv) หรือหากคุณสามารถดาวน์โหลดได้จากแหล่งที่เชื่อถือได้ผ่านทาง https และติดตั้งโดยใช้ apt-key (เช่นwget https://trusted.key.site/my-trusted-key.gpg | sudo apt-key add -) แต่ถ้าคุณไม่ ไม่มีวิธีอื่นใดคุณสามารถใช้สิ่งนี้

echo "deb http://your.repo.domain/repository/ $(lsb_release -c -s) universe" | sudo tee /etc/apt/sources.list.d/your-repo-name.list

sudo apt -o Acquire::AllowInsecureRepositories=true \
-o Acquire::AllowDowngradeToInsecureRepositories=true \
update

## if the 'apt update' above fails it is likely due to previously
## having the GPG key and repository on the system, you can clean
## out the old lists with `sudo rm /var/lib/apt/lists/your.repo.domain*`

apt-get -o APT::Get::AllowUnauthenticated=true install repo-keyring-pkgname

## If you ever run `sudo apt-key del your-repos-keyID`
## you may have to `sudo apt remove --purge repo-keyring-pkgname`
## Update should run without the GPG warnings now that the key is installed

apt-get update
apt-get install somepkg-from-repo

ตอนแรกฉันรวมมันเข้าด้วยกันเพราะ i3 ใน repo ของ sur5r ทำสิ่งนี้ แต่จากนั้นฉันก็พบว่ากุญแจอยู่ในรายการ keyserver.ubuntu.com ดังนั้นฉันจึงสามารถsudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E3CA1A89941C42E6หลีกเลี่ยงความยุ่งยากในการทำแพ็คเกจเพิ่มเติมได้


คำตอบนี้ดูเหมือนไม่สมบูรณ์เมื่อต้องเผชิญกับ Ubuntu 18.04 ที่นั่นพยายามทำให้ฉันรำคาญโดยพูดสิ่งที่น่ารังเกียจเช่น... Release is not valid yet (invalid for another 44min 35s). Updates for this repository will not be applied. แม้หลังจากสิ่ง / var / lib / apt / list / * สิ่งต่าง ๆ ...
Jürgen Weigert

นั่นเป็นเพียงปัญหาการจำลองแบบมิเรอร์และไม่ควรส่งผลกระทบต่อการรับรองความถูกต้องหรือการลงนามในแพ็คเกจในที่เก็บ ตั้งแต่ 1804 เพิ่งออกมาจากเบต้ามิเรอร์จำนวนมากพยายามติดตามและบริการมิเรอร์อาจนำคุณไปยังเซิร์ฟเวอร์ที่ยังไม่ซิงค์กันอย่างสมบูรณ์
dragon788

2

คุณสามารถรับ PUBLIC_KEY จาก keyserver และเพิ่มลงใน apt-key สมมติว่า keyserver คือpgpkeys.mit.eduคุณต้องพิมพ์ก่อน:

gpg --keyserver pgpkeys.mit.edu --recv-key KEY_IN_ERROR
gpg -a --export KEY_IN_ERROR | sudo apt-key add -

แทนที่คีย์ KEY_IN_ERROR ด้วยคีย์ในข้อความแสดงข้อผิดพลาดของคุณเช่น 5C808C2B65558117

นอกจากนี้หากคุณสนใจที่จะเพิ่มที่เก็บที่ไม่ได้ลงชื่อคุณสามารถเพิ่มการตั้งค่าสถานะในรายการที่เก็บข้อมูลที่ต้องการในแหล่งที่มารายการต่อไปนี้:

deb [allow-insecure=yes] http://www.deb-multimedia.org jessie main

สิ่งนี้มีประโยชน์จริง ๆ หากคุณต้องการปรับการตั้งค่าความปลอดภัยสำหรับแต่ละรายการอย่างละเอียด

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