Разрешение запрещено (публикация) при настройке Дженкинса

Я настраиваю Jenkins на сервер Win Win Server, и у меня возникают проблемы с настройкой Jenkins для подключения к GitHub. Я получаю следующую ошибку:

Command "git.exe fetch -t [email protected]:USER/REPO.git +refs/heads/*:refs/remotes/origin/*" returned status code 128: Permission denied (publickey).
fatal: The remote end hung up unexpectedly

ERROR: Could not fetch from any repository
FATAL: Could not fetch from any repository
hudson.plugins.git.GitException: Could not fetch from any repository
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:950)
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:908)
    at hudson.FilePath.act(FilePath.java:758)
    at hudson.FilePath.act(FilePath.java:740)
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:908)
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1184)
    at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:537)
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:425)
    at hudson.model.Run.run(Run.java:1376)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:175)

Проверенные вещи

  • Служба Jenkins работает под моим именем пользователя.
  • Я изменил свой SSH-ключ, так что у него больше нет пароля.
  • Я подтвердил, что мой SSH-ключ действителен, выполнив ту же команду, что и Jenkins, используя msysgit.
  • Проверено, что все мои пути верны.

Настройки конфигурации Jenkins

  • Jenkins 1.418
  • Плагин GitHub 0.5
  • Git плагин 1.1.9

msysgit Работает, но подсказка CMD не Когда я перехожу к действительному репо и выполняю команду из приглашения DOS, он также терпит неудачу.

Есть ли у вас какие-либо идеи, что я могу потерять?

Спасибо за вашу помощь.

Ответ 1

Как я уже говорил, указание переменной HOME является ключом при использовании протокола ssh.
Поскольку Windows не имеет HOME, вам необходимо явно определить ее в любой каталог, который вы хотите.

Однако Vestnik комментарии:

Я указал, чтобы переопределить HOME на вебе Windows node, чтобы указать его на C:\jenkins.
Я поставил правильный id_rsa под C:\jenkins\.ssh, но все еще есть эта проблема.
Мой подчиненный агент работает как служба под учетной записью SYSTEM.

Два совета:

  • вам нужно сделать свой ведомый дисплей 'set', чтобы проверить, установлен ли HOME при использовании с учетной записью SYSTEM.
    Если это не так, это может означать, что вам нужно добавить эту переменную в "переменные системной среды", а не "переменные среды пользователя".

display env from the job definition

  • Не забудьте указать id_rsa и id_rsa.pub в каталоге %HOME%\.ssh: вам нужны как открытые, так и приватные ключи ssh. (как упоминалось в git клоне с проблемой ssh ​​")

Если у вас есть параметризованная сборка, вы также можете определить HOME таким образом и проверить, соответствует ли ваш ведомый правильное значение для HOME:

define custom variables

Ответ 2

Есть два плагина в jenkins, связанных с ssh, которые могут быть использованы: Опубликовать через SSH и Плагин Jenkins SSH.

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

Далее вам нужно установить еще два плагина, которые будут использоваться в конфигурации проекта GitHub Plugin и Jenkins Git Плагин.

Плагин GitHub будет использоваться для установки проекта GitHub. Плагин Jenkins Git будет использоваться для установки "URL-адреса репозитория" и других вещей, таких как ветка и т.д.

Все плагины доступны на вкладке, доступной в диспетчере подключаемых модулей Jenkins.

Скопировано из мое сообщение в блоге по теме:

Конфигурация Дженкинса:
Плагин Jenkins SSH дает возможность устанавливать закрытый ключ для каждого хоста, второй плагин выполняет задание для глобального хоста.
Если используется Jenkins SSH-плагин, то на удаленных хостах SSH записываются хост, пользователь, кодовая фраза и путь к закрытому ключу.
Если используется функция" Опубликовать через SSH ", то в настройке SSH введите парольную фразу и вставьте закрытый ключ или напишите путь к нему.
Конфигурация проекта:
Проект GitHub https://github.com/GitUser/iOS-project/
* Управление исходным кодом
- > Git
- > → Хранилища
- > → - > URL-адрес репозитория: git @github.com: GitUser/iOS-project.git
- Вам нужно настроить ветку или взять по умолчанию -
* Построить триггеры
- > Опрос SCM - Установлен -
- > Расписание: * * * * *
* Build
- > Executed Shell

-> -> Command:  xcodebuild -target iOS-project -configuration AdHoc -sdk iphoneos5.0 clean
-> -> Command:  agvtool new-version -all $BUILD_NUMBER 
-> -> Command:  xcodebuild -target iOS-project -configuration AdHoc -sdk iphoneos5.0
-> -> Command:  xcrun -sdk iphoneos5.0 PackageApplication -v $WORKSPACE/build/AdHoc-iphoneos/iOS-project.app -o  $WORKSPACE/build/AdHoc-iphoneos/iOS-project-$BUILD_NUMBER.ipa PROVISIONING_PROFILE="<provisioning profile>" 
-> -> Command:  curl http://testflightapp.com/api/builds.json -F [email protected]$WORKSPACE/build/AdHoc-iphoneos/iCushion-1.0-$BUILD_NUMBER.ipa -F api_token=<api_token> -F team_token=<team_token> -F notes="This is an autodeploy build from Jenkins!" -F notify=True -F distribution_lists="<distributedlist 1>, <distributedlist 2>"

Ответ 3

Похоже, что плагин git теперь предоставляет способ указать Jenkins в домашний каталог.

  • Нажмите кнопку добавления учетных данных.

enter image description here

  1. Наведите Jenkins на свой секретный ключ.

enter image description here

  1. Выберите новые учетные данные из списка.

enter image description here

Ответ 4

В моей среде (Jenkins 64-бит с 32-разрядной Java-версией, работающей в 64-разрядной версии Windows Server 2016) решение было положено в папку C:\Windows\SysWOW64\config\systemprofile \.ssh, Согласно Git Документация плагина:

По умолчанию установщик Jenkins Windows устанавливает Jenkins для запуска в качестве службы в Windows, которая работает как "Локальная системная учетная запись", а не ваша учетная запись пользователя. Поскольку в "Учетной записи локальной системы" не установлены ключи SSH или known_hosts, "wone > clone" будет висеть во время сборки. Можно сохранить Jenkins как "Локальную учетную запись системы" и клонировать репозитории через SSH, убедившись, что "Локальная системная учетная запись" настроена с правильно настроенным .ssh-каталогом (то есть id_rsa, id_rsa.pub, AND known_hosts)