Вопрос или проблема
Я пытаюсь сделать chef-11.16.4-1.el6.x86_64.rpm доступным для наших серверов через локальный yum репозиторий, который мы создали.
Он недоступен в RHEL Repos, поэтому мне пришлось вручную скачать и сохранить его в нашем репозитории.
Вот что я сделал на сервере yum репозитория:
1. cd /packages/rhel65-base/; wget https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-11.16.4-1.el6.x86_64.rpm
2. createrepo /packages/rhel65-base/
Клиент Yum смог увидеть новый доступный пакет:
[user1@testserver01 ~]$ yum list chef
Loaded plugins: amazon-id, rhui-lb, security
Installed Packages
chef.x86_64 11.16.0-1.el6 installed
Available Packages
chef.x86_64 11.16.4-1.el6 local-rhel65-base
Но при попытке установить последнюю версию chef, появляется следующая ошибка:
warning: rpmts_HdrFromFdno: Header V4 DSA/SHA1 Signature, key ID 83ef826a: NOKEY
Public key for chef-11.16.4-1.el6.x86_64.rpm is not installed
Предполагая, что rpm chef не подписан, я попробовал подписать его сам, следуя https://iuscommunity.org/pages/CreatingAGPGKeyandSigningRPMs.html, но всё равно не смог заставить его работать.
Некоторая полезная информация, которую я нашел на сайте Chef, — это значение SHA1 контрольной суммы этого пакета.
Кто-нибудь есть идеи/предложения, как решить эту проблему? спасибо!
Если пакет не подписан, самое простое решение, вероятно, yum --nogpgcheck install chef
. Если у вас есть локальный репозиторий, вы можете установить:
gpgcheck=no
В соответствующем файле .repo
.
Проблема здесь в том, что вы не настроили сервер на прием ключа, который подписал пакет как действительный GPG ключ для этого репозитория.
Самое простое решение, конечно, запустить yum с nogpgcheck
, хотя это, очевидно, менее безопасно. Но если вы скачали пакет, проверили его и храните в месте, где его невозможно подделать, это может быть допустимо.
Если это неприемлемо, вам нужно получить публичную часть ключа, который был использован для подписи пакета, и поместить его на сервер, где вы пытаетесь установить пакет. Вы должны быть в состоянии сделать это, просто скопировав ключ туда и запустив rpm -i /path/to/RPM-GPG-KEY-REPONAME
.
Ключ обычно должен быть помещен в /etc/pki/rpm-gpg/RPM-GPG-KEY-REPONAME
. Также проверьте файл репозитория для вашего репо в /etc/yum.repos.d
, чтобы убедиться, что он содержит следующие строки:
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-REPONAME
gpgcheck=1
Это старый вопрос, но я все же считаю его важным ответить, чтобы предотвратить распространение вводящей в заблуждение информации. Пакет подписан, как видно из сообщения:
Public key for chef-11.16.4-1.el6.x86_64.rpm is not installed
Однако ключ не установлен… Я попытался найти ключ для этого пакета, но не смог найти URL для него (Это то, что привело меня сюда, в общем-то). Когда ключ найден/проверен, вы можете импортировать его через:
rpm --import <url>
Решение пользователя @larsks отключило проверку gpg ключа…
Ответ или решение
Установка пакета Chef-клиента через локальное yum-репо представляется интересной задачей, особенно когда речь идет о пакете, недоступном в стандартных репозиториях RHEL. В данном случае у вас возникла проблема с проверкой подписи GPG при установке пакета. Чтобы разобраться в этом, мы сначала рассмотрим, почему возникает эта ошибка, а затем перейдем к предложению решений, которые помогут вам преодолеть эту проблему.
Теория:
Когда вы устанавливаете пакеты с помощью YUM, он обычно проверяет цифровую подпись пакета с помощью GPG для обеспечения целостности и подлинности. Это важный процесс безопасности, так как он защищает ваши системы от установки поддельных или вредоносных пакетов. Если система не распознала подпись, вы видите сообщение о том, что отсутствует открытый ключ GPG, что и происходит в вашем случае.
Это может произойти по нескольким причинам:
- Пакет не подписан с использованием открытого ключа, доступного на вашем сервере.
- При наличии подписи соответствующий открытый ключ не был импортирован в систему.
- Ключ подписан устаревшим или недоступным публичным ключом.
Пример:
В вашем примере вы создали локальное репо и добавили туда скачанный RPM-пакет. Далее вы запустили createrepo
, чтобы создать метаданные репозитория. Это стандартный и правильный подход. Однако, когда вы попробовали установить пакет, появилась ошибка из-за отсутствия GPG-ключа.
Применение:
Для решения этой проблемы вы можете выбрать один из следующих подходов:
1. Отключение проверки GPG (менее рекомендованный метод из соображений безопасности):
Если вы уверены в целостности и безопасности скачанного вами пакета, вы можете установить его, отключив проверку подписи. Это можно сделать одним из следующих способов:
-
Используя параметр команды:
yum --nogpgcheck install chef
-
Отключив проверку в файле репозитория (
.repo
):
Открыть файл в/etc/yum.repos.d/<ваш_репозиторий>.repo
и добавить:[название_репо] ... gpgcheck=0
Этот метод, однако, снижает уровень безопасности и должен применяться только в случае, когда вы полностью контролируете окружение и можете гарантировать отсутствие подмены пакетов.
2. Импорт открытого ключа GPG (рекомендуется в большинстве случаев):
Если пакет действительно подписан, и вы можете достать открытый ключ, необходимо импортировать его:
- Найдите открытый ключ, используемый для подписания пакета. Обычно это доступно на сайте или у поставщика пакета.
- Импортируйте ключ в систему:
rpm --import /путь/к/RPM-GPG-KEY-REPONAME
Убедитесь, что ключ точно соответствует тому, которым подписан ваш пакет.
- Убедитесь, что файл вашего репозитория (
.repo
) в/etc/yum.repos.d
указывает на правильный путь к ключу:[название_репо] ... gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-REPONAME gpgcheck=1
Заключение:
Управление репозиториями и разворачивание пакетов через yum требует внимания к деталям, особенно в вопросах безопасности. Несмотря на доступность средств обхода проверки GPG, важно стремиться к наибольшей безопасности за счет проверки подлинности всех пакетов с помощью GPG. Надеюсь, приведенные выше рекомендации помогут вам успешно установить пакет Chef-клиента через ваше локальное репо.
При необходимости, всегда проверяйте обновления и изменения в документации как для yum
, так и для системы Chef, так как компоненты таких платформ могут часто обновляться и изменяться.