Дженкинс: Не удалось подключиться к репозиторию
Я пытаюсь соединить Дженкинса в репозитории 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.
Ответы
Ответ 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.