попытка установить пакет chef-client через локальное репозиторий yum

Вопрос или проблема

Я пытаюсь сделать 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, что и происходит в вашем случае.

Это может произойти по нескольким причинам:

  1. Пакет не подписан с использованием открытого ключа, доступного на вашем сервере.
  2. При наличии подписи соответствующий открытый ключ не был импортирован в систему.
  3. Ключ подписан устаревшим или недоступным публичным ключом.

Пример:

В вашем примере вы создали локальное репо и добавили туда скачанный 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, так как компоненты таких платформ могут часто обновляться и изменяться.

Оцените материал
Добавить комментарий

Капча загружается...