Как мне исправить ошибку GPG «NO_PUBKEY»?

364

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

W: Ошибка GPG: http://ppa.launchpad.net trusty InRelease: Следующие подписи не могут быть проверены, поскольку открытый ключ недоступен: NO_PUBKEY 8BAF9A6F

Я знаю, что могу исправить это с apt-keyпомощью терминала, согласно официальной документации Ubuntu. Но я бы хотел сделать это графически. Есть ли способ сделать это без использования терминала?

Agmenor
источник
Связанный: askubuntu.com/q/127326/178596
Уилф
«Значит»? Любопытно, что вы имели в виду под этим.
Майкл Шепер
1
Вы можете проверить эту SO поток для решения. Ссылка на связанный сайт
Аникет Тхакур
@MichaelScheper 'Есть ли способ [ы] не открывать терминал?' = ~ 'Есть ли способ сделать это без терминала?'
Уилф
@ Уилф: О! Я не хочу придумывать грамматику, но это меня смутило. Из ссылки, которую я только что проверил, «средства» - это существительное в единственном числе, которое вы имели в виду. 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-manager (то есть введите и y-ppa-managerнажмите клавишу ввода).

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

  5. В списке расширенных задач выберите «Попробуйте импортировать все недостающие ключи GPG» и нажмите «ОК».

    Вы сделали! Как говорится в диалоговом окне с предупреждением, когда вы начинаете операцию, это может занять довольно много времени (около 2 минут для меня) в зависимости от того, сколько у вас PPA и скорости вашего соединения.

monotasker
источник
18
Не очень полезно в веб-сервере, так как это устанавливает X11. Не используйте этот метод, если вы работаете с серверной версией, проверьте ответ karthick87!
гонкалотомы
2
Позволяет ли это проверять импортируемые ключи или вы просто вслепую импортируете все (и, следовательно, доверяете всем, у кого есть PPA)?
Пауло Эберманн,
2
Вы импортируете (и доверяете) ключи для каждого PPA, добавленного в вашу систему. Предполагается, что вы доверяете этим PPA и проверили их, прежде чем добавить их через apt.
monotasker
6
Ответ на этот вопрос проще далеко , и на самом деле требует меньше команд , чем этот «графический» ответ.
jpaugh
1
Но вопрос задан для графического метода.
однозадачность
559

Выполните следующие команды в терминале

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вы сообщаете системе, что доверяете ключу, который вы импортируете для подписи программного обеспечения, которое будет использовать ваша система. Не делайте этого, если вы не уверены, что ключ действительно является ключом дистрибьютора пакетов.

karthick87
источник
2
@ Наруто Это нормально. Это означает, что список не изменился на сервере.
ζ--
9
Вы можете просто передать NO_PUBKEYзначение в качестве параметра keys. например, ошибка 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 -

который добавляет ключ к доверенным ключам apt.

Решение можно найти здесь и здесь и здесь .

Pedram
источник
4
Если hkp: //keyserver.ubuntu.com не работает, используйте этот pgpkeys.mit.eduсервер.
RajaRaviVarma
1
Этот ответ решил мою проблему с хранилищем Kylin. Метод ввода sogou пиньинь добавил источник в мою /etc/apt/sources.list.d/папку, но явно не импортировал ключ gpg. Хороший ответ, простой и точный, +1!
Сергей Колодяжный
1
Спасибо! Работал для меня, чтобы решить проблему с хранилищем php.
Акаш Агарвал
1
Этот ответ решил мое обновление дляhttp://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease
mvw
и вполне возможно, что вы не сгенерировали ключ для своей системы раньше. поэтому перед выполнением вышеуказанных шагов используйте - gpg --gen-key (reference - packaging.ubuntu.com/html/getting-set-up.html )
parasrish
35

Вам необходимо получить и импортировать ключ.

Чтобы получить ключ от PPA, посетите страницу панели запуска PPA. На каждой странице PPA в Launchpad вы найдете эту ссылку (2), после нажатия на «Технические подробности об этом PPA» (1):

изображение 1

Перейдите по ней и нажмите на ссылку идентификатора ключа (3):

изображение 2

Сохраните страницу, это ваш ключевой файл.


Теперь пришло время импортировать это:

  • Applications > Software Center,
  • Edit > Software sources...,
  • Введите свой пароль,
  • Перейдите на Authenticationвкладку и Import Key File..., наконец, нажмите
  • Выберите сохраненный ключевой файл и нажмите OK.
htorque
источник
1
Не теряйте времени, смотрите ответ ниже.
Фелипе
5
@FelipeMicaroniLalli, вопрос был в том, как добавить pubkey, используя графический интерфейс, а не терминал, поэтому этот ответ был идеальным.
Крис Вудс
Теперь это сделать намного проще и быстрее с помощью y-ppa-manager (также приложения с графическим интерфейсом). Смотрите мой ответ ниже.
monotasker
1
Хорошо, но что, если репозиторий не является Ubuntu PPA. Например, Intel запускает собственный репозиторий для драйверов видеооборудования на download.01.org
mc0e
Отличное пошаговое руководство, большое спасибо! действительно полезно для тех, кто не смог добавить ключ через apt-key.
Рой Лин
12

apt может обрабатывать только 40 ключей в /etc/apt/trusted.gpg.d. 41 ключ, и вы получите ошибку GPG «открытый ключ не найден», даже если вы пройдете все шаги, чтобы добавить отсутствующий ключ (и).

Проверьте, есть ли в этом файле неиспользуемые ключи от ppa, которые вы больше не используете. Если все они используются, рассмотрите возможность удаления некоторых файлов 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 -
mchid
источник
1
Мне было проще просто удалить все ключи из /etc/apt/trusted.gpg.d, а затем перейти к принятому ответу askubuntu.com/a/386003/284664
janot
@mchid Можете ли вы процитировать документ / URL, в котором говорится об этом ограничении 41 ключа?
Себма
@SebMa Ссылка размещена в моем ответе и ссылается на ошибку в Debian, на которую повлиял этот лимит. Вот якорь фактической должности в ссылке , где упоминается это: ubuntuforums.org/showthread.php?t=2195579#post_message_12882784 Я не уверен , что если текущая документация существует на этом , но число 40 может быть использовано , потому что «40 переводится как «много» на разных языках.
mchid
@SebMa Тем не менее, ограничение существует или существовало во время этого ответа, а также в течение некоторого времени после. Я лично испытал это ограничение в 41 ключ и исправил его, удалив неиспользуемые ключи, чтобы добавить новый ключ, когда уже существует 40 ключей, чтобы избежать этой ошибки.
mchid
1
@SebMa нет wiki.debian.org/SecureApt
mchid
9

В PPA-файле WebUpd8 упакован крошечный скрипт, который я буду ссылать как одну загрузку .deb, так что вам не нужно добавлять весь PPA-файл, который автоматически импортирует все недостающие ключи GPG.

Скачайте и установите Launchpad-getkeys (игнорируйте ~ natty в его версии, он работает со всеми версиями Ubuntu от Karmic вплоть до Oneiric). После установки откройте терминал и введите:

sudo launchpad-getkeys

Если вы находитесь за прокси-сервером, все немного сложнее, поэтому посмотрите это для получения дополнительной информации.

Алин Андрей
источник
1
Это действительно так, как я делаю сейчас, так как я видел эту программу на вашем сайте. Тем не менее, цель вопроса состояла в том, чтобы знать, как сделать это графическим способом.
Агменор
Скрипт 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>

Чтобы исправить это, я выполнил следующие команды в терминале:

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

Источник - Ссылка, чтобы решить это

dennyac
источник
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 . Скопируйте отрывок и вставьте его в пустой файл, созданный на рабочем столе. Это приводит к ключевому файлу.

Затем продолжите импорт ключа:

  • Приложения> Центр программного обеспечения
  • Правка> Исходники программного обеспечения ..., введите пароль
  • На вкладке «Аутентификация» нажмите «Импортировать файл ключа ...»
  • Выберите сохраненный ключевой файл и нажмите «ОК».

Теперь вы можете удалить ранее созданный ключевой файл.

Agmenor
источник
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

NeurOSick
источник
Это было единственное, что сработало и для меня. Предположительно поврежденный файл ключей где-то?
Donnek
0

У меня была такая же проблема с клиентом DynDNS Updater.

Оказывается, это просто истек срок действия ключей.

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

Сообщение об ошибке для справки:

W: GPG error: http://cdn.dyn.com stable/ Release: The following signatures were invalid: KEYEXPIRED 141943.......
капризный
источник