Как исправить ошибку GPG “NO_PUBKEY”?

Вопрос или проблема

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

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

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

Этот ответ актуален для Ubuntu 20.04 и более ранних версий. Для Ubuntu 20.10 и более поздних версий смотрите этот ответ на StackOverflow.

Краткая версия:

sudo mkdir -m 0755 -p /etc/apt/keyrings/ 

wget -O- https://example.com/EXAMPLE.gpg |
    gpg --dearmor |
    sudo tee /etc/apt/keyrings/EXAMPLE.gpg > /dev/null
    sudo chmod 644 /etc/apt/keyrings/EXAMPLE.gpg

echo "deb [signed-by=/etc/apt/keyrings/EXAMPLE.gpg] https://example.com/apt stable main" |
    sudo tee /etc/apt/sources.list.d/EXAMPLE.list
    sudo chmod 644 /etc/apt/sources.list.d/EXAMPLE.list

# Дополнительно (вы можете найти адрес электронной почты / ID с помощью 'apt-key list')
sudo apt-key del [email protected]

Оригинальный ответ:

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

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

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

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

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

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

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

которая получает ключ с ключевого сервера ubuntu. А затем это:

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

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

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

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

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

image 1

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

image 2

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


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

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

замечание: В последних версиях больше не считается хорошей практикой добавлять ключи PPA в хранилище ключей. Однако я оставлю этот ответ, но apt-key теперь устарел, поэтому рекомендуется следовать другим методам на данный момент.

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

Проверьте, есть ли неиспользуемые ключи в этом файле из ppa(ов), которые вы больше не используете. Если все используются, подумайте о том, чтобы удалить некоторые ppa(и) вместе с соответствующими файлами ключей в /etc/apt/trusted.gpg.d

Более того, использование

sudo apt-key adv

Считается риском безопасности и не рекомендуется, так как вы “подрываете всю концепцию безопасности, поскольку это не безопасный способ получения ключей по различным причинам (например: hkp — это протокол открытого текста, короткие и даже длинные ID ключей могут быть подделаны, …)“. 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, и сообщения об ошибках разрешений доступа нигде не было… но это исправило ситуацию

Я столкнулся с той же проблемой при установке Heroku. Ссылка ниже решила мою проблему –

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

После исправления проблемы NO_PUBKEY осталась следующая проблема

W: GPG ошибка: xhttp://toolbelt.heroku.com ./ Release: Подписи оказались недействительными: BADSIG C927EBE00F1B0520 Heroku Release Engineering <[email protected]>

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

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

Источник – Ссылка для решения

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

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

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

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

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

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

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

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

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

sudo gpg --keyserver pgpkeys.mit.edu --recv-key <PUBKEY>
sudo mkdir -p /etc/apt/keyrings/
sudo gpg -a --export <PUBKEY> /etc/apt/keyrings/<ваше-имя-файла-ключа>.gpg
# теперь перейдите в ваш /etc/apt/sources.list.d/<файл определения источника>, и 
# добавьте [signed-by=/etc/apt/keyrings/<ваше-имя-файла-ключа>.gpg] между deb и url вот так:
# deb <добавьте сюда> https://...

<PUBKEY> — это 8-символьный отпечаток, такой как 210976F2, а <имя целевого файла> — имя по вашему выбору, с помощью которого вы будете знать этот ключ.

ИЗМЕНЕНИЕ: Обновлено для большей безопасности, взято из долгого ответа

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

Я перепробовал все методы для исправления 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-get update и наконец все теперь работает отлично! Спасибо!

Исходный источник : пост #17 на https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1263540

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

Оказалось, что это были просто истекшие ключи.

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

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

W: GPG ошибка: http://cdn.dyn.com stable/ Release: Подписи оказались недействительными: 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 update

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

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

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

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

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

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

Всегда хорошая идея проверить, кто подписывает репозиторий, проверяя проблемные файлы в /etc/apt/sources.list.d
Например, исследуя файл mysql.list, он показывает, где хранится ключ

### THIS FILE IS AUTOMATICALLY CONFIGURED ###
# You may comment out entries below, but any other modifications may be lost.
# Use command 'dpkg-reconfigure mysql-apt-config' as root for modifications.
deb [signed-by=/usr/share/keyrings/mysql-apt-config.gpg] http://repo.mysql.com/apt/ubuntu/ jammy mysql-apt-config
deb [signed-by=/usr/share/keyrings/mysql-apt-config.gpg] http://repo.mysql.com/apt/ubuntu/ jammy mysql-8.0
deb [signed-by=/usr/share/keyrings/mysql-apt-config.gpg] http://repo.mysql.com/apt/ubuntu/ jammy mysql-tools
#deb [signed-by=/usr/share/keyrings/mysql-apt-config.gpg] http://repo.mysql.com/apt/ubuntu/ jammy mysql-tools-preview
deb-src [signed-by=/usr/share/keyrings/mysql-apt-config.gpg] http://repo.mysql.com/apt/ubuntu/ jammy mysql-8.0

Как видите, ключ хранится в /usr/share/keyrings/mysql-apt-config.gp. В этот момент вы можете загрузить новый проблемный ключ в правильное место

gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys [ПРОБЛЕМНЫЙ КЛЮЧ] && rm /usr/share/keyrings/mysql-apt-config.gpg && gpg  --output /usr/share/keyrings/mysql-apt-config.gpg --export [ПРОБЛЕМНЫЙ КЛЮЧ]

в конечном итоге оставив часть rm /usr/share/keyrings/mysql-apt-config.gpg, если у вас нет ключа

Ответ или решение

Чтобы исправить ошибку GPG "NO_PUBKEY", которая возникает при добавлении дополнительных репозиториев в Ubuntu (например, через программу "Программные источники"), необходимо выполнить несколько шагов. Ошибка сигнализирует о том, что для данного репозитория отсутствует соответствующий публичный ключ для проверки подписи пакетов.

Способы решения проблемы

1. Использование командной строки

Хотя вы предпочитаете графический интерфейс, наиболее надежным способом решения проблемы является использование терминала. Вот несколько команд, которые могут вам помочь:

  1. Получите недостающий ключ:
    Узнайте идентификатор недостающего ключа (например, 8BAF9A6F в вашем случае). Затем выполните следующую команду:

    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8BAF9A6F
  2. Обновите список пакетов:

    sudo apt-get update

Если вы хотите использовать альтернативный метод:

sudo gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 8BAF9A6F
sudo gpg -a --export 8BAF9A6F | sudo apt-key add -
sudo apt-get update

2. Графические инструменты

Для пользователей, предпочитающих графические интерфейсы, вы можете использовать Y-PPA-Manager:

  1. Установите Y-PPA-Manager:

    sudo add-apt-repository ppa:webupd8team/y-ppa-manager
    sudo apt-get update
    sudo apt-get install y-ppa-manager
  2. Запустите Y-PPA-Manager:

    Введите в терминале:

    y-ppa-manager
  3. Импортируйте недостающие ключи:
    В главном окне Y-PPA-Manager выберите "Advanced" (Расширенные настройки), затем "Try to import all missing GPG keys" (Попробовать импортировать все недостающие GPG ключи).

Этот способ должен быстро и эффективно решить проблему.

3. Импорт ключа вручную через графический интерфейс

  1. Найдите PPA на сайте Launchpad и перейдите на его страницу.
  2. Нажмите на "Technical details about this PPA", затем на идентификатор ключа, чтобы перейти на страницу с его деталями.
  3. Сохраните ключ в файл (ключе блока PGP).
  4. Зайдите в "Программные источники" > "Импортировать ключ файла…", чтобы добавить сохраненный файл.

4. Проверьте права доступа к файлам

Проблемы с доступом к файлам ключей могут также вызвать подобные ошибки. Убедитесь, что файл ключа имеет правильные права доступа:

chmod 644 /usr/share/keyrings/*

Заключение

Ошибки GPG "NO_PUBKEY" легко исправляются, но важно удостовериться, что вы добавляете только те ключи, которым доверяете. Пользуйтесь методами, которые наиболее удобны для вас, будь то команда в терминале или графический интерфейс. Если после выполнения всех шагов ошибка все еще появляется, проверьте, правильно ли настроен ваш репозиторий и есть ли у вас доступ в Интернет.

Оцените материал
Добавить комментарий

Капча загружается...