Bagaimana cara memperbaiki kesalahan GPG "NO_PUBKEY"?

364

Saya menambahkan beberapa repositori tambahan dengan program Sumber Perangkat Lunak. Tetapi ketika saya memuat kembali paket database, saya mendapatkan kesalahan seperti berikut:

W: Kesalahan GPG: http://ppa.launchpad.net trusty InRelease: Tanda tangan berikut ini tidak dapat diverifikasi karena kunci publik tidak tersedia: NO_PUBKEY 8BAF9A6F

Saya tahu saya bisa memperbaikinya menggunakan apt-keyterminal, menurut dokumentasi resmi Ubuntu. Tetapi saya ingin melakukannya secara grafis. Apakah ada cara untuk melakukan ini tanpa menggunakan terminal?

Agmenor
sumber
'Berarti'? Ingin tahu apa yang Anda maksud dengan itu.
Michael Scheper
1
Anda dapat memeriksa utas SO ini untuk solusinya. Tautan ke situs terkait
Aniket Thakur
@MichaelScheper 'Apakah ada cara untuk tidak membuka terminal?' = ~ 'Apakah ada cara untuk melakukannya tanpa terminal?'
Wilf
@ Willf: Oh! Saya tidak bermaksud untuk memperbaiki tata bahasa, tetapi itu membingungkan saya. Dari referensi yang baru saja saya periksa, 'berarti' adalah kata benda tunggal, dan yang Anda maksudkan. dictionary.cambridge.org/dictionary/english/means Tetapi jika Anda dan Agmentor menggunakan beberapa bentuk varian bahasa Inggris di mana tata bahasa dalam pertanyaan itu benar, saya akan senang melihat referensi untuk itu, hanya karena saya tertarik pada hal semacam itu. ☺
Michael Scheper

Jawaban:

211

Sejauh ini cara paling sederhana untuk menangani ini adalah dengan Y-PPA-Manager (yang sekarang mengintegrasikan launchpad-getkeysskrip dengan antarmuka grafis).

  1. Untuk menginstalnya, pertama-tama tambahkan repositori webupd8 untuk program ini:

    sudo add-apt-repository ppa:webupd8team/y-ppa-manager
    
  2. Perbarui daftar perangkat lunak Anda dan instal Y-PPA-Manager:

    sudo apt-get update
    sudo apt-get install y-ppa-manager
    
  3. Jalankan y-ppa-manager (yaitu ketik y-ppa-managerkemudian tekan tombol enter).

  4. Ketika jendela utama y-ppa-manager muncul, klik "Advanced."

  5. Dari daftar tugas lanjutan, pilih "Coba impor semua kunci GPG yang hilang" dan klik OK.

    Kamu sudah selesai! Seperti yang dikatakan dialog peringatan ketika Anda memulai operasi, mungkin butuh waktu cukup lama (sekitar 2 menit untuk saya) tergantung pada berapa banyak PPA yang Anda miliki dan kecepatan koneksi Anda.

monotasker
sumber
18
Tidak terlalu berguna di server web, karena ini menginstal X11. Jangan gunakan metode ini jika Anda menggunakan edisi server, periksa jawaban karthick87!
goncalotomas
2
Apakah ini memungkinkan untuk memverifikasi kunci yang diimpor, atau apakah Anda hanya secara membabi buta mengimpor semuanya (dan karenanya mempercayai semua orang yang memiliki PPA)?
Paŭlo Ebermann
2
Anda mengimpor (dan mempercayai) kunci untuk setiap AKP yang Anda tambahkan ke sistem Anda. Asumsinya adalah bahwa Anda mempercayai PPA tersebut dan telah memeriksanya sebelum Anda menambahkannya melalui apt.
monotasker
6
Jawaban ini jauh lebih mudah , dan sebenarnya membutuhkan lebih sedikit perintah daripada jawaban "grafis" ini.
jpaugh
1
Tetapi pertanyaannya meminta metode grafis.
monotasker
557

Jalankan perintah berikut di terminal

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

di mana <PUBKEY>kunci publik Anda yang hilang untuk repositori, mis 8BAF9A6F.

Kemudian perbarui

sudo apt-get update

METODE ALTERNATE:

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

Perhatikan bahwa ketika Anda mengimpor kunci seperti ini menggunakan apt-keyAnda memberitahu sistem bahwa Anda percaya kunci yang Anda impor untuk menandatangani perangkat lunak sistem Anda akan menggunakan. Jangan lakukan ini kecuali Anda yakin kuncinya benar-benar kunci dari paket distributor.

karthick87
sumber
2
@Naruto Itu normal. Ini berarti bahwa daftar tidak berubah di server.
ζ--
9
Anda cukup meneruskan NO_PUBKEYnilai sebagai parameter kunci. misalnya kesalahan GPG [...] NO_PUBKEY 3766223989993A70 => sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3766223989993A70
SMMousavi
23
8BAF9A6F <- di mana Anda mendapatkan nomor itu?
Olivier Lalonde
13
Angka 8BAF9 ... adalah apa yang Anda lihat dalam kesalahan asli. Itu akan menjadi seperti NO_PUBKEY 8BAF ...
Alex
9
Jika seseorang merusak data antara saya dan repositori, dan barang-barang pengganti yang mereka tandatangani, ini akan berakhir dengan saya hanya menambahkan kunci yang mereka gunakan, lebih atau kurang secara membabi buta. Jadi apa proses untuk memverifikasi bahwa kuncinya adalah yang benar?
mc0e
43

Ini terjadi ketika Anda tidak memiliki kunci publik yang sesuai untuk repositori.

Untuk mengatasi masalah ini gunakan perintah ini:

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

yang mengambil kunci dari server kunci ubuntu. Dan kemudian ini:

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

yang menambahkan kunci ke kunci terpercaya tepercaya.

Solusinya dapat ditemukan di sini & di sini & di sini .

Pedram
sumber
4
Jika hkp: //keyserver.ubuntu.com tidak berfungsi gunakan pgpkeys.mit.eduserver ini .
RajaRaviVarma
1
Jawaban ini memecahkan masalah saya dengan repositori Kylin. Metode input pinyin sogou menambahkan sumber ke /etc/apt/sources.list.d/folder saya , tetapi tampaknya tidak mengimpor kunci gpg. Jawaban bagus, sederhana dan to the point, +1!
Sergiy Kolodyazhnyy
1
Terima kasih! Berhasil bagi saya untuk memecahkan masalah repositori php.
Akash Agarwal
1
Jawaban ini memecahkan pembaruan saya untukhttp://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease
mvw
dan sangat mungkin, bahwa Anda belum membuat kunci untuk sistem Anda sebelumnya. karena itu sebelum mengikuti langkah-langkah di atas gunakan - gpg --gen-key (referensi - packaging.ubuntu.com/html/getting-set-up.html )
parasrish
35

Anda perlu mendapatkan dan mengimpor kunci.

Untuk mendapatkan kunci dari PPA, kunjungi halaman Launchpad PPA. Pada setiap halaman PPA di Launchpad Anda akan menemukan tautan ini (2), setelah mengklik 'Detail teknis tentang PPA ini' (1):

gambar 1

Ikuti dan klik tautan ID kunci (3):

gambar 2

Simpan halaman, ini adalah file kunci Anda.


Sekarang saatnya untuk mengimpornya:

  • Applications > Software Center,
  • Edit > Software sources...,
  • Masukkan kata sandi Anda,
  • Buka Authenticationtab dan klik Import Key File..., akhirnya
  • Pilih file kunci yang disimpan dan klik OK.
htorque
sumber
1
Jangan kehilangan waktu, lihat jawabannya di bawah.
Felipe
5
@FelipeMicaroniLalli, pertanyaannya adalah bagaimana cara menambahkan pubkey menggunakan GUI, bukan terminal, jadi jawaban ini sempurna.
Chris Woods
Jauh lebih mudah dan lebih cepat untuk melakukan ini dengan y-ppa-manager (juga aplikasi gui). Lihat jawaban saya di bawah ini.
monotasker
1
OK, tapi bagaimana jika repositori itu bukan ubpa ubuntu. Misalnya Intel menjalankan repositori mereka sendiri untuk driver perangkat keras video di download.01.org
mc0e
Panduan langkah demi langkah yang hebat, terima kasih banyak! sangat membantu bagi seseorang yang gagal menambahkan kunci melalui apt-key.
Roy Ling
12

apt hanya dapat menangani 40 kunci di /etc/apt/trusted.gpg.d. 41 kunci dan Anda akan mendapatkan kesalahan GPG "tidak ditemukan kunci publik" bahkan jika Anda melalui semua langkah untuk menambahkan kunci yang hilang.

Periksa untuk melihat apakah ada kunci yang tidak digunakan dalam file ini dari ppa (s) yang tidak lagi Anda gunakan. Jika semua sedang digunakan, pertimbangkan untuk menghapus beberapa ppa (s) bersama dengan file key yang sesuai di /etc/apt/trusted.gpg.d

Selanjutnya, menggunakan

sudo apt-key adv

Dianggap sebagai risiko keamanan dan tidak direkomendasikan karena Anda " merusak seluruh konsep keamanan karena ini bukan cara aman untuk menerima kunci karena berbagai alasan (seperti: hkp adalah protokol plaintext, keyid pendek dan bahkan panjang dapat dipalsukan, ... ) ". http://ubuntuforums.org/showthread.php?t=2195579

Saya percaya cara yang benar untuk menambahkan kunci yang hilang (misalnya 1ABC2D34EF56GH78) adalah

gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv 1ABC2D34EF56GH78
gpg --export --armor 1ABC2D34EF56GH78 | sudo apt-key add -
mchid
sumber
1
Saya merasa lebih mudah untuk hanya menghapus semua kunci dari /etc/apt/trusted.gpg.d dan kemudian melanjutkan ke jawaban yang diterima askubuntu.com/a/386003/284664
janot
@mchid Bisakah Anda mengutip dokumen / url yang berbicara tentang batasan 41 kunci ini?
SebMa
@SebMa Tautan ini diposting di jawaban saya dan merujuk bug di Debian yang terkena dampak batas ini. Berikut ini adalah jangkar untuk posting aktual di dalam tautan yang menyebutkan ini: ubuntuforums.org/showthread.php?t=2195579#post_message_12882784 Saya tidak yakin apakah ada dokumentasi aktual mengenai hal ini tetapi nomor 40 mungkin digunakan karena "40 "diterjemahkan menjadi" banyak "dalam berbagai bahasa.
mchid
@SebMa Namun, batas ada atau memang ada pada saat jawaban ini dan untuk beberapa waktu sesudahnya juga. Saya pribadi mengalami batasan 41 kunci ini dan telah memperbaikinya dengan menghapus kunci yang tidak digunakan untuk menambahkan kunci baru ketika 40 kunci sudah ada untuk menghindari kesalahan ini.
mchid
1
@SebMa no wiki.debian.org/SecureApt
mchid
9

Ada skrip kecil yang dikemas dalam PPA WebUpd8 yang akan saya tautkan sebagai unduhan .deb tunggal sehingga Anda tidak perlu menambahkan seluruh PPA - yang secara otomatis mengimpor semua kunci GPG yang hilang.

Unduh dan pasang Launchpad-getkeys (abaikan ~ natty dalam versinya, ini berfungsi dengan semua versi Ubuntu dari Karmic hingga Oneiric). Setelah terinstal, buka terminal dan ketik:

sudo launchpad-getkeys

Jika Anda berada di belakang proxy, masalahnya sedikit lebih rumit, jadi lihat ini untuk info lebih lanjut

Alin Andrei
sumber
1
Ini memang cara saya lakukan sekarang, karena saya melihat program ini disajikan di situs web Anda. Namun demikian, tujuan dari pertanyaan ini adalah untuk mengetahui bagaimana melakukannya secara grafis.
Agmenor
Skrip launchpad-getkeys sekarang terintegrasi ke dalam program Y-PPA-manager. launchpad.net/~webupd8team/+archive/y-ppa-manager
monotasker
5

Saya menghadapi masalah yang sama saat menginstal Heroku. Tautan di bawah memecahkan masalah saya -

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

Setelah memperbaiki NO_PUBKEYmasalah, masalah di bawah ini tetap ada

W: GPG error: xhttp://toolbelt.heroku.com ./ Release: The following signatures were invalid: BADSIG C927EBE00F1B0520 Heroku Release Engineering <[email protected]>

Untuk memperbaikinya saya menjalankan perintah-perintah berikut di terminal:

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

Sumber - Tautan untuk menyelesaikannya

dennyac
sumber
4

Pastikan Anda telah apt-transport-httpsmenginstal:

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

Tambahkan repositori:

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 

Instal Skype untuk Linux:

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

Sumber: https://community.skype.com/t5/Linux/Skype-for-Linux-Beta-signatures-couldn-t-be-verified-because-the/td-p/4645756

Eduardo Cuomo
sumber
3

Secara umum, metode berikut ini akan berfungsi untuk setiap repositori. Pertama-tama pencarian, dengan bantuan mesin pencari, untuk teks pada situs web penyedia program terlihat seperti berikut:

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

Teks seperti itu misalnya ditampilkan di http://deb.opera.com . Salin bagian itu, tempel di file kosong yang Anda buat di desktop. Ini menghasilkan file kunci.

Kemudian lanjutkan dengan impor kunci:

  • Aplikasi> Pusat Perangkat Lunak
  • Edit> Sumber sofware ..., masukkan kata sandi
  • Tab otentikasi, klik pada 'Impor File Kunci ...'
  • Pilih file kunci yang disimpan dan klik 'Oke'.

Anda sekarang dapat menghapus file kunci yang dibuat sebelumnya.

Agmenor
sumber
3

Baik! Saya akhirnya menemukan jalan!

Saya telah menguji semua metode untuk memperbaiki kesalahan GPG NO_PUBKEY dan tidak ada yang berhasil untuk saya.

Saya telah menghapus seluruh isi folder /etc/apt/trusted.gpg.d

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

Dan saya menggunakan metode Y-PPA-Manager karena saya terlalu malas untuk membuat semua pubkey secara manual (terlalu banyak): http://www.unixmen.com/fix-w-gpg-error-no_pubkey-ubuntu/

jalankan sudo apt-get update lagi dan akhirnya semuanya bekerja dengan baik sekarang! Tank!

Sumber Berbasis: posting # 17 di https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1263540

NeurOSick
sumber
Ini adalah satu-satunya hal yang berhasil untuk saya juga. Agaknya keyfile rusak di suatu tempat?
donnek
0

Saya memiliki masalah yang sama dengan klien Updater DynDNS.

Ternyata itu hanya kunci kadaluarsa.

Menginstal ulang perangkat lunak (mengunduh yang baru .debdari situs web, kemudian menggunakan Pusat Perangkat Lunak untuk menginstal ulang) memperbaiki masalah.

Pesan kesalahan untuk referensi:

W: GPG error: http://cdn.dyn.com stable/ Release: The following signatures were invalid: KEYEXPIRED 141943.......
Ngambek
sumber