Управление ключами SSH в Jenkins для Git
Я пытаюсь запустить Jenkins с помощью репозитория GitHub (используя плагин Jenkins Git). В репозитории имеется несколько подмодулей Git, поэтому я не уверен, что хочу попробовать несколько команд развертывания.
Моя личная учетная запись GitHub является соавтором каждого из проектов, которые я хочу задействовать с Jenkins, поэтому я создал SSH-ключ в /var/lib/jenkins/.ssh
и добавил его в свою личную учетную запись GitHub.
Однако, когда я пытаюсь добавить URL-адрес репозитория в мою конфигурацию проекта Jenkins, я получаю:
Failed to connect to repository : Command "git ls-remote -h [email protected]:***/***.git HEAD" returned status code 128:
stdout:
stderr: Host key verification failed.
fatal: The remote end hung up unexpectedly
Аналогично, когда я планирую сборку, я получаю:
stderr: Host key verification failed.
fatal: The remote end hung up unexpectedly
Я также попытался настроить конфигурационный файл SSH, как описано здесь, но безрезультатно.
Может ли кто-нибудь пролить свет? Благодаря
ИЗМЕНИТЬ
Я должен добавить, что я запускаю CentOS 5.8
Ответы
Ответ 1
Похоже, что хост github.com
, к которому пытается подключиться jenkins, не указан под пользователем Jenkins $HOME/.ssh/known_hosts
. Jenkins работает на большинстве дистрибутивов как пользователь jenkins
и, следовательно, имеет свой собственный каталог .ssh
для хранения списка открытых ключей и known_hosts
.
Самое легкое решение, которое я могу решить, чтобы решить эту проблему:
# Login as the jenkins user and specify shell explicity,
# since the default shell is /bin/false for most
# jenkins installations.
sudo su jenkins -s /bin/bash
cd SOME_TMP_DIR
# git clone YOUR_GITHUB_URL
# Allow adding the SSH host key to your known_hosts
# Exit from su
exit
Ответ 2
Вы пробовали войти в систему как пользователь jenkins?
Попробуйте следующее:
sudo -i -u jenkins #For RedHat you might have to do 'su' instead.
git clone [email protected]:your/repo.git
Часто вы видите сбой, если хост не был добавлен или авторизован (поэтому я всегда вручную вхожу в качестве hudson/jenkins для первого подключения к github/bitbucket), но эта ссылка, которую вы включили, предположительно исправляет.
Если вышеуказанное не работает, попробуйте переустановить ключ. Убедитесь, что у вас есть ключ pub (т.е. id_rsa.pub). Может быть, вы пропустили несколько персонажей?
Ответ 3
В соответствии с этим article вы можете попробовать выполнить следующую команду:
ssh-add -l
Если ваш ключ отсутствует в списке, то
ssh-add /var/lib/jenkins/.ssh/id_rsa_project
Ответ 4
Это работает для меня, если у вас есть конфиг и файл закрытого ключа в /Jenkins/.ssh/, вам нужно chown (изменить владельца) для этих 2 файлов, затем restart jenkins, чтобы экземпляр jenkins мог прочитать эти 2 файла.