Git |Дженкинс |В доступе отказано (publickey) - PullRequest
0 голосов
/ 22 января 2019

У нас есть общая учетная запись / пользователь LDAP. Мы планируем использовать этого пользователя для настройки Jenkins для нашей команды.

  1. Я вошел в систему на компьютере / виртуальной машине, используя мой логин, и установил Jenkins.
  2. Затем я сгенерировал ключи ssh только из своей учетной записи, но идентификатор электронной почты, который я указывал при создании ключей ssh, был обычным пользователем.
  3. Затем я добавил публичный ключ ssh в GitHub (в Github я вошел в систему с помощью обычного пользователя).
  4. Добавлен закрытый ключ для плагина учетных данных Jenkins SSH.
  5. Создал работу, которая опрашивает SCM, и она работала нормально.
  6. Мне нужно выполнить некоторые команды git (например, pull, checkout, tag и т. Д.). Поэтому я пишу муравьиные сценарии для достижения этой цели.
  7. Когда я выполняю цель GIT ant [1] через Jenkins, я получаю следующую ошибку:

получить: [эхо] ----------------------------------------------- ----------

[эхо] Загрузка последних новостей с git@github.XYZ.com: мастер XYZ / ABC

[echo] -------------------------------------------- -------------

[exec] git@github.XYZ.com: В доступе отказано (publickey).

[exec] fatal: не удалось прочитать из удаленного репозитория.

[exec]

[exec] Пожалуйста, убедитесь, что у вас есть правильные права доступа

[exec] и хранилище существует.


Нужно ли входить в виртуальную машину, используя общую учетную запись / пользователя, генерировать ключи ssh и затем использовать эти ключи? Если да, то почему пункт № 5 работает нормально? Если нет, то что я здесь не так делаю?

[1] - Укажите команды git в плагине Jenkins Git

1 Ответ

0 голосов
/ 22 января 2019

Jenkins будет использовать свой закрытый ключ, связанный с заданием, для чтения удаленного репо.

Но: сценарий, выполняемый внутри самого задания, будет использовать ключ SSH по умолчанию, найденный у пользователя, запускающего самого Jenkins: ~ user / .ssh / id_rsa

Убедитесь, что закрытый ключ по умолчанию - это тот, который вам нужен для этого задания (или вы можете установить его через ~/.ssh/config): суть в том, что он больше не связан с плагином Jenkins SSH Credential.

...