Принудительное обновление из неподписанного репозитория

63

Я использую репо без подписи в Ubuntu 16.04 из мультимедиа Debian:

deb http://www.deb-multimedia.org jessie main

Для установки deb-multimedia-keyringя запускаю:

apt-get update && apt-get install deb-multimedia-keyring -y

Это дает ошибку:

W: GPG error: http://www.deb-multimedia.org jessie InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5C808C2B65558117
E: The repository 'http://www.deb-multimedia.org jessie InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
Shan
источник

Ответы:

40

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

--allow-unauthenticated

Из справочных страниц для apt-get:

--allow-unauthenticated
    Ignore if packages can't be authenticated and don't prompt about
    it. This can be useful while working with local repositories, but
    is a huge security risk if data authenticity isn't ensured in
    another way by the user itself. The usage of the Trusted option for
    sources.list(5) entries should usually be preferred over this
    global override. Configuration Item:
    APT::Get::AllowUnauthenticated.

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

andrew.46
источник
1
Я использую Raspbian stretchи даже использую опцию, E: The repository 'http://ftp.de.debian.org/debian testing InRelease' is not signed.которую хочу обновить с python 3.5. т 3.6.
Тимо
2
сказал мне, что «эта опция не может интерпретироваться вместе с другими опциями» при выполненииsudo apt-get update --allow-unauthenticated
Xerus
27
ПРИМЕЧАНИЕ. Похоже, это больше не работает в Ubuntu 18.04 с июля 2018 года.
Джей Тейлор,
@JayTaylor: Я только что открыл новую виртуальную машину для 18.04, и команда здесь работает отлично. Pastebin здесь: pastebin.com/ygLTnP1C
andrew.46
2
Интересно; возможно, на машине, которую я пробовал, могло быть что-то другое из-за ошибок, которые я заметил. В любом случае добавление [trusted=yes]поля к sources.list сработало. Спасибо за ваше усердие @ andrew.46 :)
Джей Тейлор
62

Вы можете установить параметры в вашем sources.list(находится в /etc/apt/sources.list):

deb [trusted=yes] http://www.deb-multimedia.org jessie main

Доверенная опция отключает проверку GPG. Смотрите man 5 sources.listподробности.

Вы можете отредактировать файл в терминале с помощью vim (или любого другого файла), например, gedit.

Пратю Барония
источник
Как мы получаем доступ sources.listиз терминала?
fuzzi
1
Он расположен в /etc/apt/sources.list. Вы можете отредактировать его в терминале с помощью vim (или того, что вы предпочитаете) или любого нетерминального редактора, такого как gedit.
Пратю Барония
8

Другое общее решение будет

sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 5C808C2B65558117

Примечание: я не тестировал решение с этим репозиторием, но я сделал это с репозиторием Skype, и он работал просто отлично.

Другое решение для вашего случая - установить ключи

wget http://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2012.05.05_all.deb -O deb-multimedia-keyring.deb
sudo dpkg -i multimedia-keyring_all.deb

Как описано в полной прогулке здесь

Фади Мохамед Осман
источник
3

Если вы пытаетесь получить пакет из репозитория, куда они упаковали ключи и включают его в репозиторий, а не куда-либо еще, загрузка и установка пакета ключ / набор ключей с помощью dpkg может быть очень раздражающей, и это очень сложно сделать легко записываемым и повторяемым образом.

Приведенный ниже сценарий не рекомендуется, если вы можете установить ключи с сервера ключей (как рекомендуется в другом ответе с использованием apt-key adv) или если вы можете загрузить их из надежного источника через https и установить с помощью apt-key (например wget https://trusted.key.site/my-trusted-key.gpg | sudo apt-key add -), но если вы не не может быть другого способа, вы можете использовать это.

echo "deb http://your.repo.domain/repository/ $(lsb_release -c -s) universe" | sudo tee /etc/apt/sources.list.d/your-repo-name.list

sudo apt -o Acquire::AllowInsecureRepositories=true \
-o Acquire::AllowDowngradeToInsecureRepositories=true \
update

## if the 'apt update' above fails it is likely due to previously
## having the GPG key and repository on the system, you can clean
## out the old lists with `sudo rm /var/lib/apt/lists/your.repo.domain*`

apt-get -o APT::Get::AllowUnauthenticated=true install repo-keyring-pkgname

## If you ever run `sudo apt-key del your-repos-keyID`
## you may have to `sudo apt remove --purge repo-keyring-pkgname`
## Update should run without the GPG warnings now that the key is installed

apt-get update
apt-get install somepkg-from-repo

Первоначально я собрал это вместе, потому что i3 в их репозитории sur5r делает это, но потом я обнаружил, что их ключи находятся в списке keyserver.ubuntu.com, так что я могу просто sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E3CA1A89941C42E6и избежать всех лишних хлопот пакета.

dragon788
источник
Этот ответ кажется неполным, когда он сталкивается с Ubuntu 18.04. Там он пытается раздражать меня, говоря такие неприятные вещи, как ... Release is not valid yet (invalid for another 44min 35s). Updates for this repository will not be applied. Даже после чтения / var / lib / apt / lists / * вещи ...
Юрген Вайгерт,
Это просто проблема зеркальной репликации, и она не должна влиять на аутентификацию или подписывание пакетов в репозиториях. Поскольку 1804 только выходит из бета-версии, многие зеркала пытаются наверстать упущенное, и служба зеркалирования может указать вам на сервер, который еще не полностью синхронизирован.
dragon788
2

Вы можете получить PUBLIC_KEY от сервера ключей и добавить его в apt-key. Предполагая, что сервер ключей есть pgpkeys.mit.edu, сначала нужно ввести:

gpg --keyserver pgpkeys.mit.edu --recv-key KEY_IN_ERROR
gpg -a --export KEY_IN_ERROR | sudo apt-key add -

Замените ключ KEY_IN_ERROR на тот, который указан в вашем сообщении об ошибке, т.е. 5C808C2B65558117.

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

deb [allow-insecure=yes] http://www.deb-multimedia.org jessie main

Это действительно полезно, если вы хотите точно настроить параметры безопасности для отдельных записей.

Леонидас
источник