ฉันจะแก้ไขข้อผิดพลาด GPG“ NO_PUBKEY” ได้อย่างไร


364

ฉันเพิ่มที่เก็บข้อมูลพิเศษด้วยโปรแกรม Software Sources แต่เมื่อฉันโหลดฐานข้อมูลแพ็คเกจฉันได้รับข้อผิดพลาดดังนี้:

W: ข้อผิดพลาด GPG: http://ppa.launchpad.net trusty InRelease: ไม่สามารถตรวจสอบลายเซ็นต่อไปนี้ได้เนื่องจากรหัสสาธารณะไม่พร้อมใช้งาน: NO_PUBKEY 8BAF9A6F

ฉันรู้ว่าฉันสามารถแก้ไขได้โดยใช้apt-keyในเทอร์มินัลตามเอกสาร Ubuntu อย่างเป็นทางการ แต่ฉันจะชอบทำแบบกราฟิก มีวิธีการทำเช่นนี้โดยไม่ต้องใช้เครื่องเทอร์มินัลหรือไม่?


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

'หมายถึง'? อยากรู้ว่าคุณหมายถึงอะไร
Michael Scheper

1
คุณสามารถตรวจสอบเธรด SOนี้เพื่อหาวิธีแก้ปัญหา เชื่อมโยงไปยังเว็บไซต์ที่เกี่ยวข้อง
Aniket Thakur

@MichaelScheper 'มีวิธีการที่จะไม่เปิดเทอร์มินัลไหม? = ~ 'มีวิธีทำโดยไม่มีเทอร์มินัลหรือไม่'
Wilf

@ Wilf: โอ้! ฉันไม่ได้หมายถึงไวยากรณ์ของ nitpick แต่มันทำให้ฉันสับสน จากการอ้างอิงฉันเพิ่งตรวจสอบ 'หมายถึง' เป็นคำนามเอกพจน์และสิ่งที่คุณหมายถึง dictionary.cambridge.org/dictionary/english/meansแต่ถ้าคุณและ Agmentor กำลังใช้ภาษาอังกฤษรูปแบบที่หลากหลายซึ่งไวยากรณ์ในคำถามนั้นถูกต้องฉันชอบที่จะเห็นการอ้างอิงเพียงเพราะฉันสนใจ สิ่งนั้น ☺
Michael Scheper

คำตอบ:


211

วิธีที่ง่ายที่สุดในการจัดการสิ่งนี้คือ Y-PPA-Manager (ซึ่งตอนนี้ได้รวมlaunchpad-getkeysสคริปต์เข้ากับส่วนต่อประสานกราฟิก)

  1. หากต้องการติดตั้งขั้นแรกให้เพิ่มที่เก็บ webupd8 สำหรับโปรแกรมนี้:

    sudo add-apt-repository ppa:webupd8team/y-ppa-manager
    
  2. อัปเดตรายการซอฟต์แวร์ของคุณและติดตั้ง Y-PPA-Manager:

    sudo apt-get update
    sudo apt-get install y-ppa-manager
    
  3. เรียกใช้ y-ppa-manager (เช่นประเภทy-ppa-managerจากนั้นกดปุ่ม Enter)

  4. เมื่อหน้าต่างหลักของ y-ppa-manager ปรากฏขึ้นให้คลิกที่ "ขั้นสูง"

  5. จากรายการงานขั้นสูงเลือก "พยายามนำเข้ากุญแจ GPG ที่ขาดหายไป" และคลิกตกลง

    คุณทำเสร็จแล้ว! ตามที่กล่องโต้ตอบคำเตือนบอกว่าเมื่อคุณเริ่มการทำงานอาจใช้เวลาสักครู่ (ประมาณ 2 นาทีสำหรับฉัน) ขึ้นอยู่กับจำนวน PPA ของคุณและความเร็วในการเชื่อมต่อของคุณ


18
ไม่มีประโยชน์จริง ๆ ในเว็บเซิร์ฟเวอร์เนื่องจากติดตั้ง X11 อย่าใช้วิธีนี้หากคุณใช้เซิร์ฟเวอร์เป็นรุ่นให้ตรวจสอบคำตอบของ karthick87!
goncalotomas

2
สิ่งนี้อนุญาตให้ตรวจสอบคีย์ที่นำเข้าหรือคุณเพียงแค่นำเข้าทุกอย่างโดยไม่ตั้งใจ (และเชื่อใจทุกคนที่มี PPA) หรือไม่
Paŭlo Ebermann

2
คุณกำลังนำเข้า (และเชื่อถือ) คีย์สำหรับ PPA ทุกรายการที่คุณเพิ่มในระบบของคุณ สมมติฐานคือคุณเชื่อถือ PPA เหล่านั้นและตรวจสอบพวกเขาก่อนที่คุณจะเพิ่มพวกเขาผ่านทางฉลาด
monotasker

6
คำตอบนี้ง่ายกว่ามากและต้องการคำสั่งน้อยกว่าคำตอบ "กราฟิก" นี้
jpaugh

1
แต่คำถามถามหาวิธีกราฟิก
monotasker

555

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

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys <PUBKEY>

ที่เป็นของคุณหายไปคีย์สาธารณะสำหรับพื้นที่เก็บข้อมูลเช่น<PUBKEY>8BAF9A6F

จากนั้นอัปเดต

sudo apt-get update

วิธีทางเลือก:

sudo gpg --keyserver pgpkeys.mit.edu --recv-key  <PUBKEY>
sudo gpg -a --export <PUBKEY> | sudo apt-key add -
sudo apt-get update

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


2
@ นารูโตะนั่นเป็นเรื่องปกติ หมายความว่ารายการนั้นไม่เปลี่ยนแปลงบนเซิร์ฟเวอร์
ζ--

9
คุณสามารถส่งNO_PUBKEYค่าเป็นพารามิเตอร์ keys ได้อย่างง่ายดาย ตัวอย่างข้อผิดพลาด GPG [... ] NO_PUBKEY 3766223989993A70 => sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3766223989993A70
SMMousavi

23
8BAF9A6F <- คุณได้เบอร์นั้นมาจากไหน?
Olivier Lalonde

13
หมายเลข 8BAF9 ... คือสิ่งที่คุณเห็นในข้อผิดพลาดเดิม มันจะเป็นอะไรที่เหมือน NO_PUBKEY 8BAF ...
อเล็กซ์

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

43

มันเกิดขึ้นเมื่อคุณไม่มีพับลิกคีย์ที่เหมาะสมสำหรับที่เก็บ

เพื่อแก้ปัญหานี้ใช้คำสั่งนี้:

gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 9BDB3D89CE49EC21

ซึ่งดึงคีย์จากเซิร์ฟเวอร์คีย์ ubuntu แล้วนี่:

gpg --export --armor 9BDB3D89CE49EC21 | sudo apt-key add -

ซึ่งจะเพิ่มคีย์เพื่อคีย์ที่เชื่อถือได้

วิธีการแก้ปัญหาที่สามารถพบได้ที่นี่และที่นี่และที่นี่


4
หาก hkp: //keyserver.ubuntu.com ไม่ทำงานให้ใช้pgpkeys.mit.eduเซิร์ฟเวอร์นี้
RajaRaviVarma

1
คำตอบนี้แก้ปัญหาของฉันด้วยที่เก็บ Kylin วิธีการป้อนข้อมูล sogou pinyin เพิ่มแหล่งข้อมูลลงใน/etc/apt/sources.list.d/โฟลเดอร์ของฉันแต่ดูเหมือนจะไม่นำเข้าคีย์ gpg คำตอบที่ดีเรียบง่ายและตรงประเด็น +1!
Sergiy Kolodyazhnyy

1
ขอบคุณ! ทำงานให้ฉันเพื่อแก้ไขปัญหาที่เก็บ php
Akash Agarwal

1
คำตอบนี้แก้ไขการปรับปรุงของฉันสำหรับhttp://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease
mvw

และค่อนข้างเป็นไปได้ว่าคุณยังไม่ได้สร้างรหัสสำหรับระบบของคุณมาก่อน ดังนั้นก่อนที่จะทำตามขั้นตอนข้างต้นให้ใช้ - gpg --gen-key (การอ้างอิง - packaging.ubuntu.com/html/getting-set-up.html )
parasrish

35

คุณต้องรับและนำเข้ากุญแจ

หากต้องการรับรหัสจาก PPA โปรดไปที่หน้า Launchpad ของ PPA ในทุกหน้า PPA ที่ Launchpad คุณจะพบลิงค์นี้ (2) หลังจากคลิกที่ 'รายละเอียดทางเทคนิคเกี่ยวกับ PPA นี้' (1):

ภาพที่ 1

ติดตามและคลิกที่ลิงค์รหัสคีย์ (3):

ภาพที่ 2

บันทึกหน้านี่เป็นไฟล์สำคัญของคุณ


ตอนนี้ได้เวลานำเข้าแล้ว:

  • Applications > Software Center,
  • Edit > Software sources...,
  • ใส่รหัสผ่านของคุณ
  • ไปที่Authenticationแท็บและคลิกImport Key File...สุดท้าย
  • OKเลือกไฟล์ที่สำคัญที่บันทึกไว้และคลิกที่

1
อย่าเสียเวลาไปกับคำตอบ
เฟลิเป้

5
@ FelipeMicaroniLalli คำถามคือวิธีเพิ่ม pubkey โดยใช้ GUI ไม่ใช่เทอร์มินัลดังนั้นคำตอบนี้จึงสมบูรณ์แบบ
Chris Woods

มันมากขึ้นและเร็วขึ้นในขณะนี้ที่จะทำเช่นนี้กับ Y-ppa ผู้จัดการ (ยังเป็นโปรแกรม GUI) ดูคำตอบของฉันด้านล่าง
monotasker

1
ตกลง แต่จะทำอย่างไรถ้าที่เก็บไม่ใช่ ubuntu ppa เช่น Intel เรียกใช้พื้นที่เก็บข้อมูลของตนเองสำหรับไดรเวอร์ฮาร์ดแวร์วิดีโอที่download.01.org
mc0e

คำแนะนำทีละขั้นตอนดีมากขอบคุณมาก! apt-keyที่เป็นประโยชน์จริงๆสำหรับบางคนที่ล้มเหลวในการเพิ่มคีย์ผ่าน
Roy Ling

12

apt สามารถจัดการได้ 40 คีย์ใน /etc/apt/trusted.gpg.d คีย์ 41 และคุณจะได้รับข้อผิดพลาด GPG "ไม่พบคีย์สาธารณะ" แม้ว่าคุณจะทำตามขั้นตอนทั้งหมดเพื่อเพิ่มคีย์ที่หายไป

ตรวจสอบเพื่อดูว่ามีคีย์ที่ไม่ได้ใช้งานในไฟล์นี้จาก ppa (s) ที่คุณไม่ได้ใช้อีกต่อไป หากมีการใช้งานอยู่ให้ลองลบ ppa บางส่วนพร้อมกับคีย์ไฟล์ที่เกี่ยวข้องใน /etc/apt/trusted.gpg.d

นอกจากนี้การใช้

sudo apt-key adv

ถือว่าเป็นความเสี่ยงด้านความปลอดภัยและไม่แนะนำเนื่องจากคุณ " บ่อนทำลายแนวคิดการรักษาความปลอดภัยทั้งหมดเนื่องจากนี่ไม่ใช่วิธีที่ปลอดภัยในการรับกุญแจด้วยเหตุผลต่าง ๆ (เช่น: hkp เป็นโปรโตคอลธรรมดาข้อความสั้นและยาวคีย์สามารถปลอมแปลงได้ ... ) " http://ubuntuforums.org/showthread.php?t=2195579

ฉันเชื่อว่าวิธีที่ถูกต้องในการเพิ่มกุญแจที่หายไป (เช่น 1ABC2D34EF56GH78) คือ

gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 1ABC2D34EF56GH78
gpg --export --armor 1ABC2D34EF56GH78 | sudo apt-key add -

1
ฉันพบว่ามันง่ายกว่าที่จะลบคีย์ทั้งหมดออกจาก /etc/apt/trusted.gpg.d แล้วดำเนินการต่อเพื่อรับคำตอบaskubuntu.com/a/386003/284664
Janan

@mchid คุณช่วยอ้างเอกสาร / url ที่พูดถึง 41 คีย์นี้ได้ไหม?
SebMa

@SebMa ลิงก์นี้โพสต์ในคำตอบของฉันและอ้างอิงข้อผิดพลาดใน Debian ที่ได้รับผลกระทบจากข้อ จำกัด นี้ นี่คือจุดยึดของโพสต์ที่เกิดขึ้นจริงภายในลิงค์ซึ่งกล่าวถึงนี้: ubuntuforums.org/showthread.php?t=2195579#post_message_12882784ฉันไม่แน่ใจว่าเอกสารจริงมีอยู่ในที่นี้หรือไม่ แต่หมายเลข 40 อาจถูกใช้เพราะ "40 "แปลเป็น" มาก "ในหลายภาษา
mchid

@SebMa อย่างไรก็ตามมีข้อ จำกัด หรือมีอยู่ในเวลาที่คำตอบนี้และหลังจากนั้นเช่นกัน ฉันพบว่าตัวเอง จำกัด คีย์ 41 ตัวและแก้ไขโดยการลบคีย์ที่ไม่ได้ใช้เพื่อเพิ่มคีย์ใหม่เมื่อมีคีย์ 40 ตัวอยู่แล้วเพื่อหลีกเลี่ยงข้อผิดพลาดนี้
mchid


9

มีสคริปต์เล็ก ๆ ที่บรรจุอยู่ใน WebUpd8 PPA ซึ่งฉันจะเชื่อมโยงเป็นการดาวน์โหลด. deb เดียวคุณจึงไม่ต้องเพิ่ม PPA ทั้งหมด - ซึ่งนำเข้าคีย์ GPG ที่หายไปทั้งหมดโดยอัตโนมัติ

ดาวน์โหลดและติดตั้งLaunchpad-getkeys (ไม่สนใจ ~ natty ในเวอร์ชั่นของมันใช้งานได้กับ Ubuntu ทุกรุ่นตั้งแต่ Karmic ไปจนถึง Oneiric) เมื่อติดตั้งแล้วให้เปิดเทอร์มินัลแล้วพิมพ์:

sudo launchpad-getkeys

หากคุณอยู่เบื้องหลังพร็อกซี่, สิ่งที่มีบิตซับซ้อนมากขึ้นเพื่อให้ดูนี้สำหรับข้อมูลเพิ่มเติม


1
เป็นวิธีที่ฉันทำตอนนี้เพราะฉันเห็นโปรแกรมนี้ปรากฏบนเว็บไซต์ของคุณ อย่างไรก็ตามจุดมุ่งหมายของคำถามก็คือต้องรู้ว่าจะทำอย่างไรในรูปแบบกราฟิก
Agmenor

สคริปต์ Launchpad-getkeys ได้รับการรวมเข้ากับโปรแกรม Y-PPA-manager แล้ว launchpad.net/~webupd8team/+archive/y-ppa-manager
monotasker

5

ฉันประสบปัญหาเดียวกันขณะติดตั้ง Heroku ลิงค์ด้านล่างแก้ปัญหาของฉัน -

http://naveenubuntu.blogspot.in/2011/08/fixing-gpg-keys-in-ubuntu.html

หลังจากแก้ไขNO_PUBKEYปัญหาแล้วปัญหาด้านล่างยังคงอยู่

W: GPG error: xhttp://toolbelt.heroku.com ./ Release: The following signatures were invalid: BADSIG C927EBE00F1B0520 Heroku Release Engineering <release@heroku.com>

เพื่อแก้ไขมันฉันดำเนินการคำสั่งต่อไปนี้ใน terminal:

sudo -i  
apt-get clean  
cd /var/lib/apt  
mv lists lists.old  
mkdir -p lists/partial  
apt-get clean  
apt-get update  

แหล่งที่มา - ลิงก์เพื่อแก้ไข


4

ตรวจสอบให้แน่ใจว่าคุณได้apt-transport-httpsติดตั้ง:

dpkg -s apt-transport-https > /dev/null || bash -c "sudo apt-get update; 
sudo apt-get install apt-transport-https -y" 

เพิ่มที่เก็บ:

curl https://repo.skype.com/data/SKYPE-GPG-KEY | sudo apt-key add - 
echo "deb [arch=amd64] https://repo.skype.com/deb stable main" | sudo tee /etc/apt/sources.list.d/skype-stable.list 

ติดตั้ง Skype สำหรับ Linux:

sudo apt-get update 
sudo apt-get install skypeforlinux -y

ที่มา: https://community.skype.com/t5/Linux/Skype-for-Linux-Beta-signatures-couldn-t-be-verified-because-the/td-p/4645756


3

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

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.1 (GNU/Linux)
[...]
-----END PGP PUBLIC KEY BLOCK-----

ข้อความดังกล่าวเป็นตัวอย่างที่แสดงบนhttp://deb.opera.com คัดลอกข้อความนั้นวางในไฟล์เปล่าที่คุณสร้างบนเดสก์ท็อปของคุณ ผลลัพธ์นี้ในไฟล์คีย์

จากนั้นดำเนินการนำเข้าคีย์ต่อไป:

  • แอปพลิเคชั่น> ศูนย์ซอฟต์แวร์
  • แก้ไข> แหล่งที่มาของซอฟต์แวร์ ... ป้อนรหัสผ่าน
  • แท็บการตรวจสอบความถูกต้องคลิกที่ 'นำเข้าไฟล์คีย์ ... '
  • เลือกไฟล์คีย์ที่บันทึกและคลิกที่ 'ตกลง'

ตอนนี้คุณสามารถลบไฟล์คีย์ที่สร้างขึ้นก่อนหน้านี้


3

ดี! ฉันพบวิธีสุดท้ายแล้ว!

ฉันได้ทดสอบวิธีทั้งหมดเพื่อแก้ไขข้อผิดพลาด GPG NO_PUBKEYและไม่มีอะไรทำงานให้ฉัน

ฉันได้ลบเนื้อหาทั้งหมดของโฟลเดอร์ /etc/apt/trusted.gpg.d

cd /etc/apt/trusted.gpg.d
sudo rm -R *
sudo apt-get update

และฉันใช้วิธีY-PPA-Managerเพราะฉันขี้เกียจเกินไปที่จะสร้าง pubkey ทั้งหมดด้วยตนเอง (มากเกินไป): http://www.unixmen.com/fix-w-gpg-error-no_pubkey-ubuntu/

เรียกใช้ sudo apt-get update อีกครั้งและสุดท้ายก็ทำงานได้ดีในขณะนี้! ถัง!

ที่มาอ้างอิง:โพสต์ # 17 บนhttps://bugs.launchpad.net/ubuntu/+source/apt/+bug/1263540


นี่เป็นสิ่งเดียวที่ใช้ได้สำหรับฉันเช่นกัน น่าจะเป็นคีย์ไฟล์ที่เสียหายที่ไหน?
donnek

0

ฉันมีปัญหาเดียวกันกับไคลเอนต์ Updater ของ DynDNS

ปรากฎว่ามันเป็นกุญแจหมดอายุ

การติดตั้งซอฟต์แวร์ใหม่ (ดาวน์โหลดใหม่.debจากเว็บไซต์จากนั้นใช้ Software Center เพื่อติดตั้งใหม่) แก้ไขปัญหา

ข้อความแสดงข้อผิดพลาดสำหรับการอ้างอิง:

W: GPG error: http://cdn.dyn.com stable/ Release: The following signatures were invalid: KEYEXPIRED 141943.......
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.