"Немає відкритого ключа" в оновленнях apt-get


133

Під час виконання apt-get updateя отримую таку помилку:

root@ADS3-Debian6:/home/aluno# apt-get update
Atingido http://sft.if.usp.br squeeze Release.gpg
Ign http://sft.if.usp.br/debian/ squeeze/contrib Translation-en
Ign http://sft.if.usp.br/debian/ squeeze/contrib Translation-pt
Ign http://sft.if.usp.br/debian/ squeeze/contrib Translation-pt_BR

(...)

Obter:10 http://security.debian.org squeeze/updates/non-free i386 Packages [14 B]
Baixados 612 kB em 4s (125 kB/s)                    
Lendo listas de pacotes... Pronto
There is no public key available for the following key IDs: 8B48AD6246925553

2
... і той рядок, який ви пройшли, є важливим бітом. Це дозволить нам визначити, які ключі вам не вистачає (якщо припустити, що встановити пакунки брелоків, бажано з надійних носіїв інформації, що пропонував ruda, це не допоможе)
derobert

1
Ви не повинні дозволяти кішці так ходити по клавіатурі. :-) ⁠
G-Man

Відповіді:


173

Інші відповіді спрацюють чи ні, залежно від того, чи є ключ "8B48AD6246925553" в упаковках, які вони вказують.

Якщо вам потрібен ключ, ви повинні отримати цей ключ, і де його знайти, він знаходиться на сервері ключів (дуже ймовірно, що це зробить будь-який сервер ключів):

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8B48AD6246925553

Це працювало і для мене, і тут немає інших відповідей ..
Сай Кіран,

@starbeamrainbowlabs зараз це! =)
Той бразильський хлопець

@ThatBrazilianGuy: D
starbeamrainbowlabs

4
Чи є спосіб визначити, чи є отриманий ключ легітим таким, що я можу зробити таку небезпечну операцію, як додавання глобального підхожість до якогось довільного ключа? Чи є спосіб перевірити достовірність ключа після його отримання? Які кроки потрібно виконати для перевірки ключа? Наприклад, єдине, що у вас є, є ftp-master.debian.org/keys/ziyi_key_2002.asc, тож як ви можете дістатися до самого поточного ключа, не порушуючи ланцюжок довіри?
Тіно

1
@ThatBrazilianGuy: Той факт, що це ваше питання, не дає вам права скасувати відповідь.
G-Man

76

Я рекомендую дотримуватися відповіді @ mariotomo, а не наведених нижче кроків:


Відповідно Не існує відкритого ключа для наступного ідентифікатора ключа , це виправить:

sudo aptitude install debian-archive-keyring

Список літератури


Останні 8 шістнадцяткових цифр поділяються з цим, тому, ймовірно, скаржиться на хрип. Нещасливі ОП уникнули, що: pub 4096R / 46925553 2012-04-27 [термін дії: 2020-04-25] uid Debian Archive Key Keyboard (7.0 / wheezy) <ftpmaster@debian.org>
Мартін Дорей,

5
Це debian-keyringсправді потрібно? Мені це спрацювало просто debian-archive-keyring.
x-yuri

Не дивно, що різні шістнадцяткові номери можуть потребувати різних рішень. Я поставив лапки навколо номера в моєму пошуку Google, щоб змусити дослівний пошук цього номера, і я приземлився на цій сторінці, яка вирішила мою проблему: reddit.com/r/linux4noobs/comments/4grdo7/… (відповідь @ mariotomo можливо, теж працювало - я не намагався)
Майкл Шепер

debian-keyringце НЕ потрібно.
x-yuri

38

Я рекомендую:

$ sudo apt-get install debian-archive-keyring
$ sudo apt-key update

Це краще, ніж інші підходи, оскільки він не встановлюється debian-keyring, що є великим і 99% часу зайвим.


1
Це все, що мені було потрібно - для мене працювало чудово!
harperville

Працюй як шарм!
Wilbeibi

1
Це було для мене кращим рішенням, оскільки воно краще вписується в контейнер Docker. Однак зауважте, що (принаймні в Докері) вам потрібно спочатку встановити лише цей пакет, потім зробити другий apt-get update, а потім встановити пакети, які ви дійсно хочете.
Malvineous

Debian 10: Попередження: 'оновлення apt-key' застаріле і більше не слід використовувати! Примітка. У вашому розповсюдженні ця команда не працює, тому її можна буде безпечно видалити
aexl

Насправді вам може знадобитися встановити debian-archive-keyring, навіть якщо у вас встановлена ​​debian-keyring в останній версії
Ángel

17

Помилка Немає доступного відкритого ключа для наступних ідентифікаторів ключів, що вказує на серйозну проблему безпеки : пакет операційної системи неможливо перевірити на цілісність із його відкритим ключем, оскільки його відкритий ключ відсутній.

Якщо повідомлення було:

There is no public key available for the following key IDs: 1397BC53640DB551

За допомогою цієї команди можна дізнатися, у якому сховищі використовується ключ:

for n in `ls /var/lib/apt/lists/*gpg`; do echo "$n" ; gpg --list-packets "$n" | grep 1397BC53640DB551; done

Що в цьому прикладі є сховищем Google для Chrome:

/var/lib/apt/lists/dl.google.com_linux_chrome_deb_dists_stable_Release.gpg

Якщо ви довіряєте Google, її уряду тощо, ви повинні дізнатися, де знаходиться ключ, і додати його:

wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add -

Виправлено для мене :) Дякую! Але просто цікаво, що було не так? Що робить перша команда, а що друга? Чи повинно це вирішити всі проблеми? Моя проблема була також із Google Chrome.
Рохан

І чи змінить перша команда щось із gpg? У ній написано, що він створив якийсь конф-файл gpg.conf, і я не знаю, чи хочу цього.
Рохан

Перший - шукає ключ у вашому списку пакетів, щоб побачити неприйнятний пакет. Другий завантажує ключ і додає його до вашої системи. Перша команда в цьому випадку не корисна, але вона хороша як загальний підхід.
Марко Сулла

3

Я зіткнувся з тією ж проблемою в Linux Mint (версія kernel 3.13.0-24), і мені вдалося вирішити її за допомогою команд:

gpg --recv-keys <the-reported-key>

gpg --export <the-reported-key> | apt-key add -

Бали, які слід зазначити:

1) Команди виконувались у порядку 2) Команди були виконані як користувач root

Надайте цю відповідь.


1

Як альтернатива:

$ sudo apt-get install debian-keyring debian-archive-keyring
$ sudo apt-key update

6
Будь ласка, не рекламуйте свій блог у своїх відповідях. Ось для чого і ваша біографія.
slm

1

Моя відповідь - це незначне оновлення (IMHO, YMMV) на @mariotomo (кого я підтримав) у наступному скрипті bash

  • також використовує gpg
  • параметризує більше
  • (також використовується інший сервер клавіш, хоча в цьому випадку я підозрюю, що це має мало значення)

Ви також можете прокоментувати evalрядок для "сухого виконання": сценарій тоді лише покаже вам, що він має намір робити, фактично цього не роблячи. Просто не забудьте змінити значення NO_PUBKEYкожного разу, коли ви користуєтесь цим (ви також можете змінити KEYSERVERза бажанням):

NO_PUBKEY='1397BC53640DB551' # CHANGE TO THE VALUE CITED IN YOUR ERROR MESSAGE!
KEYSERVER='keys.gnupg.net'

NO_PUBKEY_LEN="${#NO_PUBKEY}"
echo "NO_PUBKEY_LEN='${NO_PUBKEY_LEN}'"     # for sanity or debugging
# note following works because bash arrays have 0-based indices
NO_PUBKEY_2ND_HALF_START=$(( NO_PUBKEY_LEN/2 ))
echo "NO_PUBKEY_2ND_HALF_START='${NO_PUBKEY_2ND_HALF_START}'" # ditto
NO_PUBKEY_2ND_HALF="${NO_PUBKEY:${NO_PUBKEY_2ND_HALF_START}}"
echo "NO_PUBKEY_2ND_HALF='${NO_PUBKEY_2ND_HALF}'"             # ditto

for CMD in \
  'date' \
  "gpg --keyserver ${KEYSERVER} --recv-keys ${NO_PUBKEY_2ND_HALF}" \
  'date' \
  "gpg -a --export ${NO_PUBKEY_2ND_HALF} | sudo apt-key add -" \
; do
  echo -e "${CMD}"
  eval "${CMD}"
done

0

Запустіть, killall -q gpg-agentякщо інші рішення не працюють. Це може спрацювати.

Я отримував аналогічну помилку в сховищі PPA на Ubuntu 18.04, і, випробувавши різні рішення в Інтернеті за останній місяць, я просто натрапив на gpg-агент і вбив його. Тоді сховища PPA почали оновлюватись sudo apt-get update. Я знаю, що це може загрожувати безпеці, але іноді вам потрібен пакет від PPA, і GPG просто не дозволяє вам. Пізніше ви знову запускаєте gpg-агент, і все повертається до нормального.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.