- Вопрос или проблема
- Я очень хорошо понимаю, что это опасно
- Ответ или решение
- Как обойти/игнорировать проверки подписей gpg в apt
- 1. Использование параметра --allow-unauthenticated
- 2. Игнорирование ненадежных репозиториев
- 3. Установка пакетов с неподписанных репозиториев
- 4. Отключение проверки подлинности для устаревших репозиториев
- 5. Альтернативные способы
- Заключение
Вопрос или проблема
Все ключевые серверы, которые я посещаю, не отвечают. Мне нужно установить пакеты без проверки подписей открытых ключей. Есть ли способ обойти все проверки подписей/игнорировать все ошибки подписи или заставить apt думать, что подпись прошла?
Я очень хорошо понимаю, что это опасно
Передайте параметр --allow-unauthenticated
в apt-get
, как в:
sudo apt-get --allow-unauthenticated upgrade
Согласно справочной странице apt-get
:
–allow-unauthenticated
Игнорировать, если пакеты не могут быть аутентифицированы, и не запрашивать об этом. Это полезно для инструментов, таких как pbuilder. Элемент конфигурации:
APT::Get::AllowUnauthenticated.
Вы можете сделать эту настройку постоянной, используя свой файл конфигурации в директории /etc/apt/apt.conf.d/
. Имя файла может быть 99myown
, и оно может содержать эту строку:
APT::Get::AllowUnauthenticated "true";
Таким образом, вам не нужно будет использовать этот параметр каждый раз, когда вы хотите установить программное обеспечение. Внимание: я не рекомендую устанавливать этот параметр по умолчанию, это обходит проверки подписи, что может позволить противнику тотализировать ваш компьютер.
Если вы пытаетесь получить пакет из репозитория, где они упаковали ключи и включили их в репозиторий и нигде больше, может быть очень неприятно скачивать и устанавливать пакет ключей/ключевого кольца с помощью dpkg, и это очень сложно сделать в легко скриптируемом и повторяемом порядке.
Скрипт ниже не рекомендуется, если вы можете установить ключи с ключевого сервера или скачать их из надежного источника через https, но если у вас нет НИКАКИХ других способов, вы можете использовать это.
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
## если 'apt update' выше дает ошибку, это вероятно из-за того, что
## ранее был GPG ключ и репозиторий в системе, вы можете очистить
## старые списки с `sudo rm /var/lib/apt/lists/your.repo.domain*`
apt-get -o APT::Get::AllowUnauthenticated=true install repo-keyring-pkgname
## Если вы когда-либо выполните `sudo apt-key del your-repos-keyID`
## вам может понадобиться `sudo apt remove --purge repo-keyring-pkgname`
## Обновление должно проходить без предупреждений GPG, теперь когда ключ установлен
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
и избежать всех дополнительных проблем с пакетами.
Я столкнулся с той же проблемой на старом сервере Debian. Я даже не мог выполнить
apt-get update
что дало мне следующую ошибку:
E: Файл релиза истек, игнорируя http://archive.debian.org/debian/dists/squeeze-lts/Release (недействителен с 1183d 0h 2min 51s)
В конце концов решение заключалось в том, чтобы добавить это:
Acquire::Check-Valid-Until false;
в /etc/apt/apt.conf
(создайте его, если он не существует).
После этого ошибка стала простым предупреждением.
Я думаю, что это может сработать и на Ubuntu.
Пожалуйста, имейте в виду, что это частично небезопасно, но все же безопаснее, чем отключение проверок подписи.
Возможно, вы сможете попробовать создать файл /etc/apt/apt.conf (он будет прочитан, если вы его создадите) и вставить этот код:
APT{Ignore {"gpg-pubkey"; }};
после того, как продолжали пробовать, это наконец помогает.
Принудительное обновление из неподписанного репозитория
В новых версиях Ubuntu вместо –allow-unauthenticated можно использовать –allow-insecure-repositories.
Чтобы выполнить обновление, команда будет такой
sudo apt-get update –allow-insecure-repositories
Создайте /etc/apt/apt.conf.d/99allow_unauth
с этим содержимым:
APT { Get { AllowUnauthenticated "1"; }; };
Благодаря php-coder‘s комментарию.
Использование этого синтаксиса в вашем файле sources.list также может помочь:
deb [ allow-insecure=yes ] http...
Ответ или решение
Как обойти/игнорировать проверки подписей gpg в apt
Если вы встретили ситуацию, когда все ключевые серверы временно недоступны, и вам необходимо установить пакеты без проверки подписей публичных ключей, вы можете воспользоваться следующими безопасными методами. Однако важно помнить, что отключение проверки подписей может привести к установленным уязвимым или вредоносным пакетам. Этот подход следует использовать крайне осторожно и только в крайних случаях.
1. Использование параметра --allow-unauthenticated
Вы можете добавить опцию --allow-unauthenticated
к команде apt-get
. Это позволит игнорировать любые ошибки аутентификации пакетов. Вот как выглядит эта команда:
sudo apt-get --allow-unauthenticated upgrade
В соответствии с документацией apt-get
, данная опция:
–allow-unauthenticated — Игнорировать пакеты, не прошедшие аутентификацию, и не запрашивать об этом подтверждение. Это полезно для инструментов вроде
pbuilder
.
Если вы хотите сделать эту настройку постоянной, создайте файл конфигурации в директории /etc/apt/apt.conf.d/
с названием, например, 99myown
, и добавьте в него следующую строку:
APT::Get::AllowUnauthenticated "true";
Примечание: Рекомендуется избегать установки этой опции по умолчанию, так как это может поставить под угрозу безопасность вашей системы.
2. Игнорирование ненадежных репозиториев
Когда вы подключаетесь к репозиторию, в котором ключи упакованы и доступны только через него, вы можете использовать следующие параметры для команды apt
. Это позволяет игнорировать ошибки, связанные с отсутствующими подписями:
apt -o Acquire::AllowInsecureRepositories=true \
-o Acquire::AllowDowngradeToInsecureRepositories=true \
update
Если после выполнения команды apt update
возникли проблемы из-за ранее установленных ключей или репозиториев, вы можете очистить списки:
sudo rm /var/lib/apt/lists/your.repo.domain*
3. Установка пакетов с неподписанных репозиториев
Если вам необходимо установить пакет из репозитория без проверки подлинности, используйте команду:
apt-get -o APT::Get::AllowUnauthenticated=true install repo-keyring-pkgname
4. Отключение проверки подлинности для устаревших репозиториев
Если у вас есть сообщения, что файлы релиза устарели (например, E: Release file expired
), вы можете отключить проверку срока годности, добавив следующую строку в файл /etc/apt/apt.conf
(создайте его, если он отсутствует):
Acquire::Check-Valid-Until false;
Это действие превратит ошибку в предупреждение, что менее опасно.
5. Альтернативные способы
Вы также можете создать файл /etc/apt/apt.conf
с содержимым:
APT{Ignore {"gpg-pubkey"; }};
Это позволит игнорировать определенные предупреждения и ошибки, связанные с GPG.
Заключение
Хотя обход проверок GPG может быть необходим в экстренных ситуациях, настоятельно рекомендую использовать его только в тех случаях, когда другие способы недоступны. Всегда старайтесь использовать только доверенные источники и избегайте установки пакетов из ненадежных репозиториев. Безопасность вашей системы должна оставаться вашим приоритетом.