Як виправити помилку GPG "NO_PUBKEY"?


364

Я додав кілька додаткових сховищ із програмою Software Sources. Але коли я перезавантажую базу даних пакетів, я отримую помилку на зразок наступного:

W: Помилка GPG: http://ppa.launchpad.net довірна InRelease: Не вдалося перевірити наступні підписи, оскільки відкритий ключ недоступний: NO_PUBKEY 8BAF9A6F

Я знаю, що можу виправити це за apt-keyдопомогою терміналу, згідно з офіційною документацією на Ubuntu. Але я хотів би це зробити графічно. Чи є спосіб це зробити без використання терміналу?



"Середній"? Цікаво, що ти мав на увазі під цим.
Майкл Шепер

1
Ви можете перевірити цю різьбу SO на рішення. Посилання на пов’язаний сайт
Aniket Thakur

@MichaelScheper "Чи є засіб [s] не відкривати термінал?" = ~ 'Чи є спосіб зробити це без терміналу?'
Вільф

@Wilf: О! Я не маю на увазі нітпік граматики, але це мене бентежило. З посилання, яке я щойно перевірив, "означає" - іменник однини, і той, який ви мали на увазі. dictionary.cambridge.org/dictionary/english/means Але якщо ви та Agmentor користуєтесь якоюсь варіантовою формою англійської мови, де граматика у питанні правильна, я хотів би побачити на неї посилання лише тому, що мене цікавить така річ. ☺
Майкл Шепер

Відповіді:


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-менеджер (тобто введіть y-ppa-managerпотім натисніть клавішу Enter).

  4. Коли з’явиться головне вікно y-ppa-менеджера, натисніть «Додатково».

  5. Зі списку розширених завдань виберіть "Спробуйте імпортувати всі відсутні GPG-ключі" та натисніть кнопку ОК.

    Ви закінчили! Як зазначається у діалоговому вікні попередження, коли ви починаєте операцію, це може зайняти досить багато часу (для мене приблизно 2 хвилини), залежно від кількості PPA у вас та швидкості з'єднання.


18
Не дуже корисно для веб-сервера, оскільки це встановлює X11. Не використовуйте цей метод, якщо ви користуєтесь серверною версією, перевірте відповідь karthick87!
goncalotomas

2
Чи дозволяє це перевірити ключі, які імпортуються, або ви просто сліпо імпортуєте все (і тому довіряєте всім, хто має PPA)?
Paŭlo Ebermann

2
Ви імпортуєте (і довіряєте) ключі для кожного PPA, який ви додали до вашої системи. Припущення полягає в тому, що ви довіряєте цим PPA і перевірили їх, перш ніж ви додали їх через apt.
монотаксер

6
Відповідь на це питання простіше далеко , і на самому справі вимагає менше команд , ніж цей «графічний» відповідь.
jpaugh

1
Але питання задало графічний метод.
монотакер

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
@Naruto Це нормально. Це означає, що список не змінився на сервері.
ζ--

9
Ви можете просто передати NO_PUBKEYзначення як параметр ключів. наприклад помилка GPG [...] NO_PUBKEY 3766223989993A70 => sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3766223989993A70
SMMousavi

23
8BAF9A6F <- звідки ви взяли це число?
Олів'є Лалонде

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!
Сергій Колодяжний

1
Дякую! Мені працювали над вирішенням проблеми репозиторію PHP.
Акаш Агарвал

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, питання полягало в тому, як додати віскі за допомогою GUI, а не терміналу, тому ця відповідь була ідеальною.
Кріс Вудс

Зараз це набагато простіше та швидше зробити за допомогою y-ppa-manager (також додаток gui). Дивіться мою відповідь нижче.
монозахід

1
Гаразд, але що робити, якщо сховище не є ubuntu ppa. Наприклад, Intel запустила власне сховище для драйверів відео апаратного забезпечення на завантаженні.01.org
mc0e

Чудовий покроковий посібник, дуже дякую! дуже корисно для того, хто не зміг додати ключ через apt-key.
Рой Лінг

12

apt може обробляти лише 40 клавіш у /etc/apt/trusted.gpg.d. 41 клавіша, і ви отримаєте помилку GPG "жодного відкритого ключа не знайдено", навіть якщо ви пройдете всі кроки, щоб додати відсутніх ключі.

Перевірте, чи є у цьому файлі невикористані ключі від ПП, які ви більше не використовуєте. Якщо всі використовуються, спробуйте видалити деякі ppa (s) разом із відповідними ключами файлів у /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
янота

@mchid Чи можете ви цитувати документ / URL, який говорить про цю межу 41 ключа?
SebMa

@SebMa Посилання розміщено у моїй відповіді та посилається на помилку в Debian, на яку вплинув цей ліміт. Ось прив’язка до фактичної публікації у посиланні, яке згадує про це: ubuntuforums.org/showthread.php?t=2195579#post_message_12882784 Я не впевнений, чи існує справжня документація щодо цього, але число 40 може бути використане, оскільки "40 "перекладається на" багато "багатьма різними мовами.
мчід

@SebMa Однак обмеження існує або існувало на час цієї відповіді та ще деякий час. Я особисто пережив цю межу 41 ключа і виправив її, видаливши невикористані ключі, щоб додати новий ключ, коли 40 клавіш уже існували, щоб уникнути цієї помилки.
мчід


9

У криптовалюті WebUpd8 упакований крихітний скрипт, який я пов'язую як одне завантаження .deb, тому вам не доведеться додавати весь PPA - який автоматично імпортує всі відсутні GPG-ключі.

Завантажте та встановіть Launchpad-getkeys (ігноруйте ~ natty у своїй версії, вона працює з усіма версіями Ubuntu від Karmic аж до Oneiric). Після встановлення відкрийте термінал і введіть:

sudo launchpad-getkeys

Якщо ви стоїте за проксі-сервером, все є дещо складнішим, тому див. Це для отримання додаткової інформації


1
Це дійсно так, як я роблю зараз, оскільки побачив цю програму, представлену на вашому веб-сайті. Тим не менш, метою питання було знати, як це зробити графічно.
Агменор

Сценарій запуску-getkeys тепер інтегрований у програму Y-PPA-менеджер. 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>

Щоб виправити це, я виконав наступні команди в терміналі:

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-begether-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, тому що я лінивий створювати всі паблікі вручну (занадто багато): http://www.unixmen.com/fix-w-gpg-error-no_pubkey-ubuntu/

запустіть sudo apt-отримайте оновлення ще раз і, нарешті, все працює чудово зараз! Танки!

Основне джерело: публікація №17 на https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1263540


Це було єдине, що працювало і для мене. Імовірно, десь пошкоджений ключ-файл?
донек

0

У мене була така ж проблема з клієнтом Updater DynDNS.

Виявляється, це були щойно закінчені ключі.

Перевстановлення програмного забезпечення (завантаження нового .debз веб-сайту, потім використання програмного центру для перевстановлення) вирішило проблему.

Повідомлення про помилку для довідки:

W: GPG error: http://cdn.dyn.com stable/ Release: The following signatures were invalid: KEYEXPIRED 141943.......
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.