Git | Дженкинс | В доступе отказано (publickey)
У нас есть общая учетная запись / пользователь LDAP. Мы планируем использовать этого пользователя для настройки Jenkins для нашей команды.
- Я вошел в систему на машине / ВМ, используя мой логин и установил Jenkins.
- Затем я сгенерировал ключи ssh только из своей учетной записи, но идентификатор электронной почты, который я указывал при создании ключей ssh, был обычным пользователем.
- Затем я добавил публичный ключ ssh в GitHub (в Github я вошел в систему с помощью обычного пользователя).
- Добавлен закрытый ключ для плагина учетных данных Jenkins SSH.
- Создал работу, которая делает опрос SCM, и она работала нормально.
- Мне нужно выполнить некоторые команды git (например, pull, checkout, tag и т. Д.). Поэтому я пишу муравьиные сценарии для достижения этой цели.
- Когда я выполняю цель GIT ant [1] через Jenkins, я получаю следующую ошибку:
получить: [эхо] --------------------------------------------- ------------
[echo] Последние новости от git@github.XYZ.com: мастер XYZ/ABC
[эхо] ----------------------------------------------- ----------
[exec] git@github.XYZ.com: В доступе отказано (публичный ключ).
[exec] fatal: Не удалось прочитать из удаленного хранилища.
[ВЫПЛНЫ]
[exec] Пожалуйста, убедитесь, что у вас есть правильные права доступа
[exec] и хранилище существует.
Нужно ли входить в виртуальную машину, используя общую учетную запись / пользователя, генерировать ключи ssh и затем использовать эти ключи? Если да, то почему пункт № 5 работает нормально? Если нет, что не так я здесь делаю?
1 ответ
Дженкинс будет использовать свой закрытый ключ, связанный с заданием, для чтения удаленного репо.
Но: скрипт, выполняемый внутри самого задания, будет использовать ключ SSH по умолчанию, найденный у пользователя, запускающего Jenkins: ~user/.ssh/id_rsa
Убедитесь, что закрытый ключ по умолчанию - тот, который вам нужен для этой работы (или вы можете установить его через ~/.ssh/config
): смысл в том, что это больше не связано с плагином Jenkins SSH Credential.