Подтвердить что ты не робот

Дженкинс: Не удалось подключиться к репозиторию

Я пытаюсь соединить Дженкинса в репозитории GitHub.

Когда я указываю URL репо, jenkins возвращает следующее сообщение об ошибке:

Не удалось подключиться к хранилищу: команда "git ls-remote -h [email protected]: adolfosrs/jenkins-test.git HEAD" вернула код состояния 128: stdout: stderr: Ошибка проверки ключа хоста. Неустранимый: Не удалось прочитать из удаленного хранилища. Пожалуйста, убедитесь, что у вас есть правильные права доступа и хранилище существует.

При использовании HTTPS://Url jenkins возвращает:

Не удалось подключиться к хранилищу: не удалось подключиться к https://github.com/adolfosrs/jenkins-test.git (status = 407)

Я мог бы успешно клонировать репо на той же машине, где работает jenkins, и также запустить git ls-remote -h [email protected]:adolfosrs/jenkins-test.git HEAD. Так что у меня есть правильный SSH на github.

4b9b3361

Ответ 1

Проблема заключалась в том, что каким-то образом я создал файлы ssh с пользователем root. Таким образом, владельцем файлов был root.

Решение просто изменило право собственности на пользователя jenkins.

chown jenkins id_rsa.pub 
chown jenkins id_rsa

Ответ 2

Это очень сложная проблема - даже если вы знакомы с тем, как все работает в https с сертификатами (OTOH, если вы видите мое обходное решение, кажется очень логичным:)

Если вы хотите подключиться к репозиторию GIT через http (s) из оболочки, вы должны убедиться, что общедоступный сертификат сохранен (как файл) на вашем компьютере. Затем вы добавите этот сертификат в конфигурацию GIT

git config [--global] http.sslCAInfo "сертификат"

(замените "сертификат" на полный путь/имя файла PEM:)

Для использования в оболочке вы также, например, поставьте '.netrc', подтверждающую ваши учетные данные для входа в http-сервер. Сделав это, вы сможете сделать "git clone https://..." без какого-либо интерактивного предоставления учетных данных.

Однако для Jenkins-сервиса это немного отличается... Здесь процесс jenkins должен знать сертификат сервера - и он не использует настройки оболочки (в значении глобального файла конфигурации GIT.gitconfig '): P

Мне нужно было добавить еще один параметр в параметры запуска Jenkins.

... -Djavax.net.ssl.trustStore = "keystore"...

(замените "keystore" на полный путь/имя, как описано ниже:)

Теперь скопируйте файл хранилища ключей вашего веб-сервера, удерживая сертификат на каком-то пути (я знаю, что это грязный хак и не совсем secure:)) и ссылайтесь на него с помощью "-Djavax.net". ssl.trustStore = '.

Теперь служба Jenkins примет сертификат с веб-сервера, предоставляющего репозиторий через https. Настройте URL-адрес репозитория GIT, например

https://yourserver.com/your-repositorypath

Обратите внимание, что вам все равно требуется ".netrc" в домашней папке jenkins-user для входа в систему!!! Таким образом, то, что я описываю, следует рассматривать как обходное решение... пока не будет предоставлен надлежащий рабочий админ-модуль. IMHO этот плагин (в его текущей версии 1.9.4) неисправен.

Я никогда не мог получить учетную запись-помощник для работы от Дженкинса, независимо от того, что я пробовал:( В лучшем случае мне пришлось увидеть некоторые ошибки в отношении недоступного временного вспомогательного файла учетных данных и т.д. В Jenkins JIRA вы можете увидеть множество ошибок, но никаких исправлений.

Итак, если кто-то заставил его работать нормально, пожалуйста, поделитесь знаниями...


P.S.: Использование плагинов Jenkins в следующих версиях:

Плагин учетных данных 1.9.4, GIT клиентский плагин 1.6.1, Jenkins GIT плагин 2.0.1

Ответ 3

У меня была такая же проблема. То, как я решил это на Mac, следующее:

  • Переключиться на пользователя jenkins (sudo -iu jenkins)
  • Запуск: ssh-keygen (Примечание. Теперь вы создаете пары ключей ssh ​​для пользователя jenkins. Вы должны увидеть что-то вроде этого: Введите файл для сохранения ключа (/Users/Shared/Jenkins/.ssh/id_rsa):
  • Нажимайте Enter для значения по умолчанию до конца
  • Запустите команду, показанную в сообщении об ошибке Jenkins, на вашем сайте (например: "git ls-remote -h git @github.com: adolfosrs/jenkins-test.git HEAD" )
  • Вас спросят, хотите ли вы продолжить. Скажите "да"
  • Репозиторий Github будет добавлен в ваш файл known_hosts в:/Users/Shared/Jenkins/.ssh/
  • Вернитесь на портал Jenkins и попробуйте URL-адрес Github SSH
  • Он должен работать. Удачи

Ответ 4

Проверьте настройки ниже. Это всегда работает для меня.

Конфигурация Jenkins:

1) Проверьте, правильно ли указан исполняемый файл git

2) Предоставьте ссылку репозитория SSH git @blahblah

3) Под учетными данными → Выберите имя пользователя и аутентификацию (перейдите на ваш сервер, создайте ключи SSH ssh-keygen... Скопируйте ключи в JENKINS_HOME/, ssh). Вы должны иметь возможность подключаться к вашему репозиторию git из Дженкинс

Ответ 5

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

  • Войдите в систему как jenkins su jenkins (вы можете сначала сделать sudo passwd jenkins, чтобы иметь возможность установить пароль для jenkins. Я не мог найти значение по умолчанию...)
  • Сгенерировать пару ключей ssh: ssh-keygen
  • Скопируйте открытый ключ (id_rsa.pub) в свою учетную запись github (или где угодно)
  • Клонировать репо в качестве дженкинсов, чтобы хост добавил к jenkins known_hosts, что необходимо сделать. Теперь вы можете удалить клонированное репо, если хотите.

Ответ 6

В нашем случае git должен был быть установлен на сервере Jenkins.

Ответ 7

В Ubuntu поместите файлы id_rsa и id_rsa.pub в /var/lib/jenkins/.ssh

Сделайте Дженкинса собственными sudo chown -R jenkins /var/lib/jenkins/.ssh/

Убедитесь, что ключ Jenkins добавлен в качестве ключа развертывания с доступом RW в GitHub (или аналогичном) - используйте для этого клавишу id_rsa.pub.

Теперь все должно быть связано с плагином SCM Sync.

Ответ 8

Позвольте мне добавить, что одной очень незначительной проблемой, которая может генерировать этот тип ошибки, является отсутствие расширения .git в URL-адресе репозитория. Убедитесь, что вы вводите полный URL-адрес, заканчивающийся на .git. Я использую bitbucket, поэтому то, что я делаю, это делать "клонировать", и для меня автоматически генерируется полный URL-адрес. Аналогичный подход существует с github.

Ответ 9

В моем случае я редактировал файл known_hosts с пользователем root. Таким образом, он изменил права собственности на файл root, а пользователь jenkins начал метать "git @github.com: xxxxxx/xxxx.git HEAD" возвратил код статуса 128: stdout: stderr: проверка ключа хоста не удалась "при клонировании git изображение, Возврат права собственности разрешил проблему.

Ответ 10

Убедитесь, что ключ хоста RSA и IP-адрес сервера битбакет добавлены в файл "известных хостов". Содержимое должно выглядеть как

bitbucket.org,xx.xx.xx.xx ssh-rsa host_key

Не забудьте изменить право собственности на Jenkins для всех файлов в /var/lib/jenkins/.ssh/

Ответ 11

Пока не упоминается здесь, но это может происходить и из тайника. Мы столкнулись с той же самой проблемой, основной причиной нашей проблемы было то, что экземпляр stash, который мы используем для jenkins, потерпел крах. Перезапуск тайника решил это в нашем случае.

Ответ 12

В моем случае я решил эту проблему

  • нажав кнопку Add рядом с текстом "Учетные данные"
  • добавление учетных данных (login и password)
  • выберите эти учетные данные во всплывающем меню, которое находится слева от кнопки Add
  • жду пару секунд

Моей средой был установлен Jenkins в Windows. Вопрос пользовательского интерфейса состоял в том, почему предупреждение было помещено перед инструментом для его устранения.

Ответ 13

Я столкнулся с подобной проблемой, когда пытался соединить jenkins на моем сервере Windows с моим личным репозиторием GIT. Ниже приведена ошибка, возвращенная в разделе управления исходным кодом задания Jenkins.

Не удалось подключиться к хранилищу: команда "git.exe ls-remote -h ssh://[email protected]_server/repo.git HEAD" вернула код состояния 128: stdout: stderr: ключ загрузки "C:\Windows\TEMP\ssh4813927591749610777.key ": неверный формат git @my_server: В доступе отказано (publickey). Неустранимый: Не удалось прочитать из удаленного хранилища.

Пожалуйста, убедитесь, что у вас есть правильные права доступа и хранилище существует.

Эта ошибка возникает из-за того, что jenkins не может выбрать закрытый ключ ssh из своего пользовательского каталога. Я решил это следующим образом

Шаг 1

В задании jenkins заполните следующую информацию в разделе " Source Code Management

Хранилища

URL репозитория: ssh://[email protected]_server/repo.git
Полномочия: нет

Шаг 2

В моей настройке jenkins работает под локальной системной учетной записью, поэтому каталог пользователя - C:\Windows\System32\config\systemprofile (Это важная вещь в этой настройке, которая не очень очевидна).

Теперь создайте закрытый и открытый ключи ssh-keygen -t rsa -C "key label" с помощью ssh-keygen -t rsa -C "key label" через оболочку git bash. Закрытый и открытый ключи ssh находятся в каталоге .ssh вашего пользовательского каталога. Просто скопируйте папку .ssh и вставьте ее в C:\Windows\System32\config\systemprofile

Шаг 3

Добавьте ваш открытый ключ к вашей учетной записи сервера GIT. Запустите задание jenkins, и теперь вы сможете подключиться к учетной записи GIT через ssh от jenkins.