จะแก้ไขคีย์ GPG ที่ขาดหายไปได้อย่างไร


154

ฉันเพิ่งติดตั้ง Ubuntu 12.04 และฉันเพิ่ม repo บางส่วนและเมื่อฉันทำapt-get updateฉันก็หายไปคีย์ gpg

คำสั่งต่อไปนี้ดูเหมือนจะไม่ทำงานสำหรับฉัน:

apt-get update 2> /tmp/keymissing; for key in $(grep "NO_PUBKEY" /tmp/keymissing |sed "s/.*NO_PUBKEY //"); do echo -e "\nProcessing key: $key"; gpg --keyserver subkeys.pgp.net --recv $key && sudo gpg --export --armor $key | apt-key add -; done

จะแก้ไขปัญหานี้ได้อย่างไร?


1
มันจะดีถ้าคำตอบสำหรับคำถามนี้รวมถึงสาเหตุข้อผิดพลาดนี้เกิดขึ้นในสถานที่แรกและจะทำอย่างไรเพื่อหลีกเลี่ยงมันในอนาคต
Flimm

ฉันแก้ไขปัญหาโดยใช้ Y-ppa-manager ขอบคุณ Ashu สำหรับการแก้ปัญหา!

1
วิธีการแก้ปัญหาแบบละเอียดพร้อมสกรีน
ช็อต

1
เกี่ยวข้อง: askubuntu.com/q/13065/178596
Wilf

คำตอบ:


222

ฉันชอบวิธีนี้ดาวน์โหลดคีย์ที่หายไปจากเซิร์ฟเวอร์คีย์ Ubuntu อีกครั้ง

สำหรับ Ubuntu

ในกรณีของฉัน

 Reading package lists... Done  
 W: GPG error: http://ppa.launchpad.net precise 
 Release: The following signatures couldn't be verified because the public key is not available: 
 NO_PUBKEY 2EA8F35793D8809A

นี่คือคำสั่งเพื่อเพิ่มคีย์ที่หายไปที่กล่าวถึงในข้อความข้อผิดพลาด

sudo apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 2EA8F35793D8809A

ดังนั้นฉันจะใช้คีย์ที่หายไป2EA8F35793D8809Aและขอให้ keyserver.ubuntu.com เพิ่มเข้าไปในรายการของคีย์ที่ฉันมีใน apt

สำหรับ linux mint เซิร์ฟเวอร์หลัก
ของคุณแตกต่างกันเล็กน้อยkeyserver.linuxmint.com

sudo apt-key adv --recv-key --keyserver keyserver.linuxmint.com "missing key"

เซิร์ฟเวอร์ทางเลือกอื่นที่ควรลอง
keyserver.ubuntu.com


1
askubuntu.com/a/136735/10998ไม่ทำงานสำหรับฉัน
nelaaro

5
มีผลกระทบด้านความปลอดภัยใด ๆ หรือไม่? ฉันแค่ดาวน์โหลดคีย์สาธารณะผ่าน http ใช่มั้ย
Ajedi32

1
@iamcreasy เพื่อพิสูจน์การติดตั้ง Ubuntu ว่าแพ็คเกจที่คุณกำลังติดตั้งนั้นปลอดภัยและปราศจากมัลแวร์แต่ละแพ็คเกจถูกลงนามโดยคีย์เซิร์ฟเวอร์ ubuntu ดังนั้นตัวติดตั้งของคุณจะตรวจสอบว่าแพ็คเกจที่คุณติดตั้งนั้นมาจากแหล่งที่เชื่อถือได้และผ่านการตรวจสอบหรือไม่ ฉันไม่พบเอกสารที่ดีเกี่ยวกับเรื่องนี้ แต่อาจช่วยได้ [gpg doc] ( help.ubuntu.com/community/ ...... )
nelaaro

1
ผมได้สร้างฟังก์ชั่นจะเพิ่มปุ่มที่จำเป็น adkeys (){ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys "$1";}และเพื่อลบคีย์ที่ซ้ำกันหรือปัญหาผมใช้ในการทำเช่นนี้:grep -ril "pattern" /etc/apt | sudo xargs rm -f
SergioAraujo

1
--keyserver ha.pool.sks-keyservers.netผมขอแนะนำให้ เป็นกลุ่มของเซิร์ฟเวอร์คีย์ที่มีความพร้อมใช้งานสูงซึ่งเพิ่มโอกาสในการรับรหัสที่คุณต้องการอย่างมาก
โรบินเหมือนนกใน

21

มีซอฟต์แวร์ที่เรียกว่าY PPA managerมันสามารถช่วยแก้ไขข้อผิดพลาดที่สำคัญของปุ่ม GPG ได้
ผู้จัดการ PPA Y

ติดตั้ง -

sudo add-apt-repository ppa:webupd8team/y-ppa-manager  
sudo apt-get update  
sudo apt-get install y-ppa-manager    

เมื่อคุณติดตั้งแล้วให้เริ่มจากนั้นไปที่advanceและเลือก "นำเข้าคีย์ GPG ที่หายไป"


2
คุณต้องเพิ่ม sudo ลงในคำสั่งนี้! sudo apt-get...
FIH

มันใช้งานได้สำหรับฉันด้วยและฉันก็ประทับใจมากกับอินเตอร์เฟสที่ใช้งานง่ายของ Y PPA Manager มันเป็นสิ่งที่ดีมากขอบคุณ Ashu
CoalaWeb

ฉันทำสิ่งที่คุณพูด แต่ไม่มีอะไรเกิดขึ้น ฉันหมายความว่าฉันไม่สามารถหาแอพได้ทุกที่ในเมนู
Cristiana Nicolae

@CristianaNicolae เมื่อติดตั้งแล้วคุณสามารถค้นหา Y PPA Manager ได้ภายใต้แอปพลิเคชั่น> เครื่องมือระบบ
Ashu

ขออภัย Ashu ฉันได้ตรวจสอบและตรวจสอบซ้ำแล้วซ้ำอีก ฉันยังไม่เห็นที่นั่น ดูเหมือนว่าจะมีการติดตั้งบางแห่งในระบบ แต่ด้วยเหตุผลบางอย่างมันไม่แสดงที่ใดก็ได้ในเมนู
Cristiana Nicolae

14

การดาวน์โหลดอัตโนมัติที่ใช้apt-key adv --recv-keysอาจไม่ทำงานหลังไฟร์วอลล์

ในกรณีนี้ให้เปิดหน้าเว็บของอูบุนตูที่สำคัญของเซิร์ฟเวอร์0x<hexadecimal code of your missing key>ในเว็บเบราว์เซอร์ของคุณและค้นหาสตริง

เปิดลิงก์ในส่วนpub บันทึกเนื้อหาสำคัญ (จาก-----BEGIN PGP PUBLIC KEY BLOCK-----ถึง-----END PGP PUBLIC KEY BLOCK-----) เป็นไฟล์

จากนั้นเรียกใช้:

sudo apt-key add <file-with-saved-key>

ที่มา: http://opensourceforgeeks.blogspot.in/2013/04/w-gpg-error-httpppalaunchpadnet-precise.html


12

ก่อนอื่นให้ป้อนคำสั่งต่อไปนี้ในเทอร์มินัล

 sudo rm /var/lib/apt/lists/* -vf

จากนั้นอัพเดตระบบของคุณโดยป้อนคำสั่งต่อไปนี้ในเทอร์มินัล

 sudo apt-get update && sudo apt-get upgrade

หลังจากนี้จะไม่มีข้อผิดพลาดและทุกอย่างจะทำงานได้ดี


ขอบคุณสำหรับการตอบกลับ ลำพังสำหรับปัญหาของผมก็คือ preety ง่ายมาก: ชนิด sudo suก่อนการพิมพ์คำสั่งของฉันข้างต้น
FIH

แม้ว่าสิ่งนั้นจะช่วยคุณได้ แต่sudo suก็ไม่มีวิธีที่ถูกต้อง - ในกรณีนี้sudo -sจะทำสิ่งที่คุณต้องการ
guntbert

ฉันคิดว่าคุณหมายถึงsudo rm /var/lib/apt/lists/* -rf(ตัวเลือก "r" แทน "v")
Oliboy50

9
ใช้ทั้งสองอย่างsudoและrmเป็นอันตราย ใช้ทั้งสองอย่างrmและ*เป็นอันตราย ใช้สามคำสั่งเดียวกันและฉลามจะกัดคุณหรือไฟล์ของคุณ
JB

มันไม่ทำงานสำหรับฉัน
WiSaGaN

9

สำหรับ Ubuntu 12.04 แม่นยำ: โซลูชันถาวร

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

  1. เปิดไฟล์~/.gnupg/gpg.confด้วยโปรแกรมแก้ไขข้อความ

    ในอาคารผู้โดยสาร: gedit ~/.gnupg/gpg.conf

  2. จากนั้นในไฟล์นี้ค้นหาบรรทัดตัวหนาต่อไปนี้ (บรรทัดที่ 116) (ซึ่งควรเป็นค่าเริ่มต้นดังต่อไปนี้):

    [... ]
    keyserver hkp: //keys.gnupg.net
    # keyserver mailto: pgp-public-keys@keys.nl.pgp.net
    # keyserver ldap: //keyserver.pgp.com

  3. จากนั้นเพิ่มบรรทัดตัวหนาต่อไปนี้เพื่อให้ผลลัพธ์ต่อไปนี้:

    (เพิ่ม # ในบรรทัดที่สองตามเพื่อแสดงความคิดเห็นที่อยู่เก่า)

    [... ] keyserver hkp: //keys.gnupg.net # keyserver mailto: pgp-public-keys@keys.nl.pgp.net # keyserver ldap: //keyserver.pgp.com
    keyserver http://keyserver.ubuntu.com
    #

  4. บันทึกไฟล์และลองอัปเดตอีกครั้ง:

    ในอาคารผู้โดยสาร: sudo apt-get update


7

ตามคำตอบ nelaar:

sudo apt-get update 2>&1 1>/dev/null | sed -ne 's/.*NO_PUBKEY //p' |
while read key; do
    echo 'Processing key:' "$key"
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys "$key"
done

สคริปต์ดัมพ์ข้อผิดพลาดทั้งหมดลงในไฟล์ชั่วคราวจากนั้นวนซ้ำข้อผิดพลาดที่อิมพอร์ตคีย์ที่หายไป


6

วิธีที่ง่ายที่สุดคือ Y PPA MAnager

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager 

เปิดY PPA Manager จาก Dash

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนรหัสผ่านผู้ดูแลของคุณ

ป้อนคำอธิบายรูปภาพที่นี่

ดับเบิลคลิกที่ตัวเลือกขั้นสูง

ป้อนคำอธิบายรูปภาพที่นี่

คลิกลองนำเข้าคีย์ GPG ที่หายไปทั้งหมด

ป้อนคำอธิบายรูปภาพที่นี่

คลิกตกลงเพื่อแก้ไข


4

ก่อนอื่นให้ป้อนคำสั่งต่อไปนี้ในเทอร์มินัล

sudo rm /var/lib/apt/lists/* -vf

จากนั้นอัพเดตระบบของคุณโดยป้อนคำสั่งต่อไปนี้ในเทอร์มินัล

sudo apt-get update && sudo apt-get upgrade

หลังจากนี้จะไม่มีข้อผิดพลาดและทุกอย่างจะทำงานได้ดี


2

สิ่งที่ใช้ได้ผลสำหรับฉันคือการลบรหัสก่อนแล้วจึงติดตั้งใหม่ เพื่อให้บรรลุที่ฉันทำต่อไปนี้:

root@ > ~: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 630239CC130E1A7FD81A27B140976EAF437D05B5

ลบด้วย

root@ > ~: sudo apt-key del 630239CC130E1A7FD81A27B140976EAF437D05B5

จากนั้นติดตั้งใหม่โดยพิมพ์

root@ > ~: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 630239CC130E1A7FD81A27B140976EAF437D05B5

1

ฉันพบปัญหาเดียวกันด้วยการเพิ่ม ppa ( ppa:nathandyer/vocal-stable) มันทำให้ที่เก็บของฉันพัง ฉันได้รับคำแนะนำจากผู้เขียน Web Upd8 เกี่ยวกับวิธีที่ฉันสามารถลองแก้ไขได้นี่คือขั้นตอนของเขาที่ใช้งานได้

สำรอง.gpgคีย์ของคุณในกรณีที่มีบางอย่างผิดปกติ

ให้สร้างโฟลเดอร์ที่เราจะเก็บข้อมูลสำรองไว้

  • mkdir ~/gpg-backups

    การสำรองข้อมูลนี้ไฟล์ทั้งหมดใน/etc/apt/trusted.gpg.d/โฟลเดอร์

  • sudo cp /etc/apt/trusted.gpg.d/*.* ~/gpg-backups/

ตอนนี้เราจะลบ.gpgกุญแจทั้งหมด

  • sudo rm /etc/apt/trusted.gpg.d/

  • sudo cp /etc/apt/trustdb.gpg ~/gpg-backups/

  • sudo rm /etc/apt/trustdb.gpg

ในซอฟต์แวร์ & การอัปเดตบนแท็บ "การรับรองความถูกต้อง" คลิก "เรียกคืนค่าเริ่มต้น

ติดตั้งตัวจัดการ y-ppa เพื่อนำเข้าคีย์ GPG ที่หายไปทั้งหมด

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager

เอกสารอ้างอิง :


1
sudo rm /etc/apt/trusted.gpg.d/*สายหนึ่งที่ดูเหมือนว่าจะมีข้อผิดพลาดจะต้อง ถนัด*ที่ EOL เป็นไปไม่ได้ที่คุณไม่สามารถลบไดเรกทอรีที่ไม่ว่างเปล่ากับrmเมื่อ-rตัวเลือกไม่ได้ระบุ .-- อาและคุณสามารถฆ่า 2 นกกับหิน 1 sudo mv /etc/apt/trustdb.gpg ~/gpg-backups/โดยสาย เพราะหากคุณย้ายไฟล์คุณไม่จำเป็นต้องrmใช้ไฟล์ต้นฉบับในภายหลัง
ไวยากรณ์

1

ฉันต้องการแก้ไขข้อผิดพลาดเช่นนี้โดยอัตโนมัติในสคริปต์ทุบตี สำหรับผู้ที่สนใจนี่ควรทำเคล็ดลับ:

sudo apt-get update 2> /tmp/keymissing
if [ -f /tmp/keymissing ]
then
    for key in $(grep "NO_PUBKEY" /tmp/keymissing |sed "s/.*NO_PUBKEY //")
        do 
        echo -e "\nProcessing key: $key"
        sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $key
        sudo apt-get update
    done
    rm /tmp/keymissing
fi

0

หากคุณมีสิ่งนี้:

# aptitude update
...
Ign http://archive.canonical.com wily/partner Translation-en_US
Fetched 422 kB in 3s (130 kB/s)
W: GPG error: http://ubuntu.volia.net wily InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32

ก่อนอื่นให้ลอง:

# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32

ผลลัพธ์ของคำสั่งสุดท้ายอาจเป็น:

gpg: keyblock resource `/etc/apt/trusted.gpg.d/webupd8team_ubuntu_experiments.gpg': resource limit
gpg: keyblock resource `/etc/apt/trusted.gpg.d/webupd8team_ubuntu_gthumb.gpg': resource limit

ดังนั้นคุณต้องไปที่/etc/apt/trusted.gpg.d/และลบคีย์ที่ไม่ได้ใช้แล้วทำซ้ำapt-key advและaptitude update



-1

ปัญหานี้เกิดขึ้นกับฉันเมื่อฉันติดตั้ง 12.04 โดยใช้การตั้งค่าภาษาเยอรมัน รายการที่เก็บจะใช้ที่เก็บมิเรอร์แบบเยอรมันตามค่าเริ่มต้น หากเป็นกรณีนี้คุณสามารถแก้ไขรายการที่เก็บข้อมูลและเปลี่ยนที่เก็บมิรเรอร์เยอรมันทั้งหมดเป็นที่เก็บมาตรฐานของ Ubuntu

คุณสามารถใช้วิธีการดังต่อไปนี้:

sudo nano /etc/apt/sources.list

ค้นหาและแทนที่ด้วยนาโนโดยใช้Alt-r

ค้นหา (เพื่อแทนที่): /de.

แทนที่ด้วย: /

แทนที่ทั้งหมด (กดA)

บันทึกไฟล์Ctrl-x

จากนั้นอัพเดตระบบของคุณโดยป้อนคำสั่งต่อไปนี้ในเทอร์มินัล:

sudo apt-get update && sudo apt-get upgrade

หลังจากนี้จะไม่มีข้อผิดพลาดและทุกอย่างจะทำงานได้ดี


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