Ошибка apt update 'Signature verification failed': как обновить GPG-ключи репозитория
Почему возникает ошибка цифровой подписи при обновлении системы
Пакетный менеджер APT в целях безопасности проверяет каждый скачиваемый репозиторий с помощью криптографической цифровой подписи (GPG-ключа). Если разработчики репозитория обновили устаревший ключ безопасности, у ключа истек срок действия (Expired key) или в системе отсутствует открытый ключ, команда sudo apt update блокирует обновление с фатальными ошибками.
Типичные сообщения об ошибке
The following signatures were invalid: EXPKEYSIG ...GPG error: ... The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 8719F39F22458A51E: The repository '...' is not signed. Updating from such a repository can't be done securely.
Пошаговое исправление ошибок GPG-ключей
Способ 1: Автоматический импорт отсутствующего ключа по его номеру (NO_PUBKEY)
Если в ошибке указан конкретный 16-значный шестнадцатеричный номер ключа (например, 8719F39F22458A51), загрузите его напрямую с публичного сервера ключей Ubuntu:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8719F39F22458A51Способ 2: Современный безопасный метод для Ubuntu 22.04 / 24.04 (папка /etc/apt/keyrings)
Утилита apt-key в новых версиях Ubuntu объявлена устаревшей (deprecated). Правильный современный способ импорта ключа в изолированную директорию:
Создаем системную папку для изолированных ключей:
sudo mkdir -p /etc/apt/keyrings
Скачиваем ключ и конвертируем его в бинарный формат gpg:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgШаг 3: Проверка системных часов (Частая скрытая причина)
Если на сервере сбились системная дата и время, сертификаты ключей мгновенно признаются системой недействительными. Проверьте и синхронизируйте часы:
timedatectl
sudo timedatectl set-ntp trueШаг 4: Повторное обновление локальной базы пакетов
sudo apt updateВсе репозитории должны успешно обновиться со статусом Hit или Get без красных ошибок.
Типовые ошибки администраторов
- Игнорирование ошибок с флагом --allow-unauthenticated: Попытка принудительно установить пакеты без проверки подписей отключает защиту от MITM-атак, позволяя злоумышленникам подменить бинарные файлы программ на сервере.
- Забытые заброшенные репозитории (PPA): Если проект закрылся, а его PPA-репозиторий удален авторами, удалите устаревший файл из папки
/etc/apt/sources.list.d/.
ITSTM проведет ревизию пакетной базы ваших Linux-серверов, исправит поврежденные PPA-источники и настроит локальные зеркала пакетов.
Частые вопросы (FAQ)
Почему команда apt-key выдает предупреждение 'apt-key is deprecated'?
В целях безопасности глобальное доверие ключам для всей системы заменено на изолированные ключи. Теперь каждый репозиторий в sources.list должен иметь персональную ссылку на свой ключ через параметр 'signed-by=/etc/apt/keyrings/имя.gpg'.
Как удалить сломанный PPA-репозиторий, который больше не обновляется?
Удалите соответствующий .list файл из директории /etc/apt/sources.list.d/ или воспользуйтесь утилитой: sudo add-apt-repository --remove ppa:имя_автора/имя_репозитория.
Что делать, если сервер keyserver.ubuntu.com не отвечает по порту 11371?
Некоторые провайдеры блокируют порт HKP (11371). Укажите опрос через стандартный веб-порт 80: sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys НОМЕР_КЛЮЧА.
Как посмотреть список всех установленных GPG ключей в системе?
Выполните команду: sudo apt-key list или посмотрите файлы в директории /etc/apt/trusted.gpg.d/.