Как я могу исправить ошибку GPG "NO_PUBKEY"?

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

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

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

14 ответов

Решение

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

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

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

Это происходит, когда у вас нет подходящего открытого ключа для хранилища.

Чтобы решить эту проблему, используйте эту команду:

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

который получает ключ с сервера ключей Ubuntu. И тогда это:

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

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

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

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

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

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

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


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

  • Applications > Software Center,
  • Edit > Software sources...,
  • Введите ваш пароль,
  • Перейти к Authentication вкладку и нажмите на Import Key File..., в конце концов
  • Выберите сохраненный ключевой файл и нажмите OK,

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 -

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

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

sudo launchpad-getkeys

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

Эта ошибка также может возникать, когда файл списка APT от PPA указывает на локальную связку ключей, например

deb [signed-by=/usr/share/keyrings/SOMETHING.gpg] https://download.something.org/something something/

И хотя этот файл может существовать в вашей системе (возможно, загруженный с помощью предыдущей команды), он может быть нечитаемым из-за отсутствия разрешений. Я только что исправил эту ошибку, запустив

chmod 644 /usr/share/keyrings/*

после получения файла связки ключей. Основная проблема заключалась в использованииsudoкогда я уже был пользователем root. Действительно странно, так как все это в любом случае является root, и нигде не было сообщения об ошибке разрешения доступа... но это исправило

Убедитесь, что у вас есть 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

Я столкнулся с той же проблемой при установке 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  

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

В целом, следующий метод должен работать для каждого хранилища. Прежде всего, с помощью поисковой системы выполните поиск текста на веб-сайте поставщика программы, который выглядит следующим образом:

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

Такой текст, например, отображается на http://deb.opera.com/. Скопируйте отрывок и вставьте его в пустой файл, созданный на рабочем столе. Это приводит к ключевому файлу.

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

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

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

Хорошо! Я наконец нашел способ!

Я протестировал все методы, чтобы исправить ошибку 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

Обновленная версия (Ubuntu 22.04 LTS)

Поскольку apt-key устарел, и вы хотите использовать/etc/apt/trusted.gpg.d/, вы можете использовать

      sudo gpg --keyserver pgpkeys.mit.edu --recv-key <PUBKEY>
sudo gpg -a --export <PUBKEY> | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/<target name>.gpg

<PUBKEY>похож ли отпечаток пальца на 8 символов210976F2и<target name>— это имя по вашему выбору, под которым вы узнаете этот ключ.

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

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

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

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

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

2021 август. Это то, что сработало для меня.

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

Последняя строка вызовет ошибки отсутствия ключей.

Затем вам нужно будет вручную установить каждый из ключей, перечисленных в ошибках, например, если ошибка говорит о том, что ваш отсутствует PUB_KEYявляется 9BDB3D89CE49EC21,

Вы можете вручную добавить ключ с помощью команды sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 9BDB3D89CE49EC21

Повторно запустите обновление sudo apt-get

Повторите процесс для нового ключа, вызванного ошибкой.

Скажите, был ли новый ключ 3BDB3D89CE49EC24, Просто вручную добавьте ключ с помощью команды sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3BDB3D89CE49EC24

Повторно запустите sudo apt-get update и повторяйте процесс, пока все ошибки не исчезнут.

Затем вернитесь на сайт пакета, который вы пытались установить, и повторите процесс установки.

В моем случае ошибка появлялась, когда я пытался установить Sublime TextВыполнение вышеуказанного и возвращение к руководству по установке Sublime здесь решило проблемы.

Не забудьте проголосовать, если это сработает для вас. И это должно сделать

Другие вопросы по тегам