Как исправить недостающие ключи GPG?

154

Я только что установил Ubuntu 12.04, и я добавил репо, и когда я сделал это apt-get update, у меня пропал ключ gpg.

Следующая команда, кажется, не работает для меня:

apt-get update 2> /tmp/keymissing; for key in $(grep "NO_PUBKEY" /tmp/keymissing |sed "s/.*NO_PUBKEY //"); do echo -e "\nProcessing key: $key"; gpg --keyserver subkeys.pgp.net --recv $key && sudo gpg --export --armor $key | apt-key add -; done

Как решить эту проблему?

ИФД
источник
1
Было бы хорошо, если бы ответы на этот вопрос включали, почему эта ошибка происходит в первую очередь, и что нужно делать, чтобы избежать ее в будущем.
Flimm
Я решил свою проблему с помощью Y-ppa-manager. Спасибо Ашу за решение!
1
Подробное решение со скриншотами opensourceforgeeks.blogspot.in/2013/04/…
Аникет Тхакур
1
Связанный: askubuntu.com/q/13065/178596
Уилф

Ответы:

222

Мне понравилось это решение, повторно загрузите недостающие ключи с сервера ключей Ubuntu.

Для Ubuntu

В моем случае

 Reading package lists... Done  
 W: GPG error: http://ppa.launchpad.net precise 
 Release: The following signatures couldn't be verified because the public key is not available: 
 NO_PUBKEY 2EA8F35793D8809A

Вот команда для добавления отсутствующего ключа, упомянутого в сообщении об ошибке.

sudo apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 2EA8F35793D8809A

Поэтому я беру недостающий ключ 2EA8F35793D8809Aи прошу keyserver.ubuntu.com добавить его в список ключей, которые у меня есть в apt.

Для Linux Mint
Ваш сервер ключей немного отличаетсяkeyserver.linuxmint.com

sudo apt-key adv --recv-key --keyserver keyserver.linuxmint.com "missing key"

Альтернативные серверы ключей, чтобы попробовать
keyserver.ubuntu.com

nelaaro
источник
1
askubuntu.com/a/136735/10998 не работает для меня.
nelaaro
5
Есть ли какие-либо последствия для безопасности с этим? Я просто скачиваю открытый ключ через http, верно?
Ajedi32
1
@iamcreasy, чтобы доказать установкам Ubuntu, что устанавливаемые вами пакеты безопасны и не содержат вредоносных программ, каждый пакет подписан сервером ключей Ubuntu. Таким образом, ваш установщик проверяет, является ли устанавливаемый вами пакет надежным и проверенным источником. Я не нашел действительно хорошей документации об этом, но это могло бы помочь [gpg doc] ( help.ubuntu.com/community/… )
nelaaro
1
Я создал функцию добавления необходимых ключей adkeys (){ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys "$1";}и удаления дублированных или проблемных ключей, которые я использую для этого:grep -ril "pattern" /etc/apt | sudo xargs rm -f
SergioAraujo
1
Я рекомендую --keyserver ha.pool.sks-keyservers.net. Это пул ключей с высокой доступностью, который значительно увеличивает ваши шансы получить нужный ключ.
Робин, как птица
21

Существует программное обеспечение, которое Y PPA managerможет помочь исправить ошибки ключей GPG.
Y PPA менеджер

Установить -

sudo add-apt-repository ppa:webupd8team/y-ppa-manager  
sudo apt-get update  
sudo apt-get install y-ppa-manager    

После того, как вы установите его , запустить его, а затем перейти к advanceи выберите «Импортировать все недостающие ключи GPG»

Ашу
источник
2
Вы должны добавить sudo к этой команде! sudo apt-get...
Fih
Это сработало и для меня, и я очень впечатлен чистым и простым в использовании интерфейсом Y PPA Manager, это была хорошая находка, спасибо Ашу.
CoalaWeb
Я сделал то, что вы говорите, но ничего не случилось. Я имею в виду, что я не могу найти приложение нигде в меню.
Кристиана Николае
@CristianaNicolae После установки вы можете найти Y PPA Manager в разделе Приложения> Системные инструменты.
Ашу
Извините Ашу, я проверил и дважды проверил. Я до сих пор не могу видеть это там. Кажется, что он установлен где-то в системе, но по некоторым причинам он нигде не отображается в меню.
Кристиана Николае
14

Использование автоматической загрузки apt-key adv --recv-keysможет не работать за брандмауэром.

В этом случае откройте веб-страницу Ubuntu Key Server в своем веб-браузере и найдите строку 0x<hexadecimal code of your missing key>.

Откройте ссылку в разделе паба . Сохраните содержимое ключа (от -----BEGIN PGP PUBLIC KEY BLOCK-----до -----END PGP PUBLIC KEY BLOCK-----) в виде файла.

Затем запустите:

sudo apt-key add <file-with-saved-key>

Источник: http://opensourceforgeeks.blogspot.in/2013/04/w-gpg-error-httpppalaunchpadnet-precise.html

Melebius
источник
12

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

 sudo rm /var/lib/apt/lists/* -vf

затем обновите свою систему, введя следующую команду в терминале

 sudo apt-get update && sudo apt-get upgrade

после этого не должно быть ошибок, и все должно работать нормально.

Бхарат
источник
спасибо за ответ. Решение для моей проблемы было намного проще: напечатайте sudo suперед тем, как набрать мою команду выше
Fih
Хотя это помогло бы вам, sudo suни в коем случае не правильный подход - в этом случае sudo -sсделал бы то, что вам нужно.
Гюнтберт
Я думаю, что вы имели в виду sudo rm /var/lib/apt/lists/* -rf(опция "r" вместо "v")
Oliboy50
9
Использование обоих sudoи rmопасно. Использование обоих rmи *опасно. Используйте три в одной и той же команде, и акула укусит вас или ваши файлы.
JB.
Это не работает для меня.
WiSaGaN
9

Для Ubuntu 12.04 Precise: постоянное решение

на это сообщение об ошибке, возникающее после добавления нового хранилища и обновления списка хранилищ. Это связано с тем, что адрес сервера больше не действителен. Так что просто поменяйте адрес на хороший.

  1. Откройте файл ~/.gnupg/gpg.confв текстовом редакторе.

    В терминале: gedit ~/.gnupg/gpg.conf

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

    [...]
    сервер
    ключей hkp: //keys.gnupg.net # сервер ключей mailto: pgp-public-keys@keys.nl.pgp.net
    # сервер ключей ldap: //keyserver.pgp.com

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

    (добавьте # во вторую строку, как следует, чтобы закомментировать старый адрес)

    [...] сервер ключей hkp: //keys.gnupg.net # сервер ключей mailto: pgp-public-keys@keys.nl.pgp.net # сервер ключей ldap: //keyserver.pgp.com
    keyserver http://keyserver.ubuntu.com
    #

  4. Сохраните файл и попробуйте обновить снова:

    В терминале: sudo apt-get update

blitzter47
источник
7

На основании нелаарского ответа:

sudo apt-get update 2>&1 1>/dev/null | sed -ne 's/.*NO_PUBKEY //p' |
while read key; do
    echo 'Processing key:' "$key"
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys "$key"
done

Сценарий сбрасывает все ошибки во временный файл, а затем перебирает их, импортируя отсутствующие ключи.

Zafarella
источник
6

Самый простой способ с Y PPA MAnager

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager 

Open Y PPA Manager из Dash

введите описание изображения здесь

Введите ваш пароль администратора

введите описание изображения здесь

Двойной щелчок по расширенной опции

введите описание изображения здесь

Нажмите Попробуйте импортировать все недостающие ключи GPG

введите описание изображения здесь

Нажмите Ok, чтобы исправить это

Касим
источник
4

Сначала введите следующую команду в терминале

sudo rm /var/lib/apt/lists/* -vf

затем обновите свою систему, введя следующую команду в терминале

sudo apt-get update && sudo apt-get upgrade

после этого не должно быть ошибок, и все должно работать нормально.

DaniilPiter
источник
2

Для меня сработало сначала удалить ключ, а затем переустановить. Для этого я сделал следующее:

root@ > ~: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 630239CC130E1A7FD81A27B140976EAF437D05B5

удаление с

root@ > ~: sudo apt-key del 630239CC130E1A7FD81A27B140976EAF437D05B5

Затем переустановите, набрав

root@ > ~: sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 630239CC130E1A7FD81A27B140976EAF437D05B5
QuixRhyno
источник
1

Я столкнулся с той же проблемой, добавив ppa ( ppa:nathandyer/vocal-stable), он сломал мои репозитории. Я руководствовался от автора Web Upd8, как я могу попытаться это исправить, вот его шаги, которые работали мне.

Сделайте резервную копию .gpgключей, на случай, если что-то пойдет не так.

Давайте создадим папку, в которой мы разместим нашу резервную копию.

  • mkdir ~/gpg-backups

    Это создает резервные копии всех файлов в /etc/apt/trusted.gpg.d/папке.

  • sudo cp /etc/apt/trusted.gpg.d/*.* ~/gpg-backups/

Теперь мы удалим все .gpgключи.

  • sudo rm /etc/apt/trusted.gpg.d/

  • sudo cp /etc/apt/trustdb.gpg ~/gpg-backups/

  • sudo rm /etc/apt/trustdb.gpg

в разделе «Программное обеспечение и обновления» на вкладке «Аутентификация» нажмите «Восстановить настройки по умолчанию»

Установите менеджер y-ppa, чтобы импортировать все недостающие ключи GPG

sudo add-apt-repository ppa:webupd8team/y-ppa-manager
sudo apt-get update
sudo apt-get install y-ppa-manager

Ссылка :

blade19899
источник
1
Кажется, в одной строке содержится ошибка sudo rm /etc/apt/trusted.gpg.d/*. Пропускать *в EOL невозможно, так как вы не можете удалять непустые каталоги с помощью, rmкогда -rопция не указана. - Ах, и вы можете убить 2х птиц одним камнем за линию sudo mv /etc/apt/trustdb.gpg ~/gpg-backups/. Потому что, если вы переместите файл, вам не нужен rmисходный файл впоследствии.
синтаксическая ошибка
1

Я хотел автоматически исправить подобные ошибки в скрипте bash. Для тех, кто заинтересован, это должно сделать свое дело:

sudo apt-get update 2> /tmp/keymissing
if [ -f /tmp/keymissing ]
then
    for key in $(grep "NO_PUBKEY" /tmp/keymissing |sed "s/.*NO_PUBKEY //")
        do 
        echo -e "\nProcessing key: $key"
        sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $key
        sudo apt-get update
    done
    rm /tmp/keymissing
fi
user2304170
источник
0

Если у вас есть что-то вроде этого:

# aptitude update
...
Ign http://archive.canonical.com wily/partner Translation-en_US
Fetched 422 kB in 3s (130 kB/s)
W: GPG error: http://ubuntu.volia.net wily InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 40976EAF437D05B5 NO_PUBKEY 3B4FE6ACC0B21F32

Прежде всего попробуйте:

# sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32

Вывод последней команды может быть:

gpg: keyblock resource `/etc/apt/trusted.gpg.d/webupd8team_ubuntu_experiments.gpg': resource limit
gpg: keyblock resource `/etc/apt/trusted.gpg.d/webupd8team_ubuntu_gthumb.gpg': resource limit

Так что вам нужно пойти /etc/apt/trusted.gpg.d/и удалить неиспользуемые ключи, а затем повторить apt-key advиaptitude update

ipeacocks
источник
0

Бегать wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -

towfiqpiash
источник
-1

Эта проблема возникла у меня при установке 12.04 с использованием немецких настроек. В этом случае список репозиториев по умолчанию использует немецкие зеркальные репозитории. Если это так, вы можете отредактировать список репозиториев и изменить все немецкие зеркальные репозитории на стандартные репозитории Ubuntu.

Вы можете использовать следующий метод:

sudo nano /etc/apt/sources.list

Поиск и замена в Nano с помощью Alt-r

Поиск (заменить): /de.

Заменить: /

Заменить все (нажмите A)

Сохранить файл Ctrl-x

Затем обновите свою систему, введя следующую команду в терминале:

sudo apt-get update && sudo apt-get upgrade

После этого не должно быть ошибок, и все должно работать нормально.

taufan
источник
2
Это на самом деле не отвечает на вопрос ОП, особенно учитывая, что они не использовали источники.
Кевин Боуэн