Jenkins git плагин с доступом ssh к bitbucket: Permission denied (publickey). fatal: Не удалось прочитать из удаленного хранилища
Я не могу подключить плагин Jenkins git для аутентификации с помощью частного репозитория git на bitbucket.org. Я создал пару частных/открытых ключей, используя ssh-keygen, и установил открытый ключ в моей учетной записи битбакет под страницей учетной записи ssh.
На странице настройки задания я установил раздел управления исходным кодом следующим образом:
Repository URL: [email protected]:mproject.git (the SSH url for clone)
Credentials: The private key id_rsa generated by ssh-keygen (no passphrase) and user git.
Он сразу же дает следующую ошибку:
Failed to connect to repository : Command "git -c core.askpass=true ls-remote -h [email protected]:myproject.git HEAD" returned status code 128:
stdout:
stderr: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Когда я выполняю ту же команду git из командной строки в каталоге рабочей области в оболочке, она отлично работает. У меня есть свой ~/.bashrc, указанный в пути к среде сборки/свойства, поэтому я смущен тем, что может быть другим, когда оно выполняется в задании jenkins.
У меня есть только два пользователя на моей машине jenkins (jenkins и root), и я запускал команду git как пользователь jenkins. Домашний каталог пользователя jenkins -/home/jenkins. Моя работа jenkins работает как пользователь анонимный. Может ли это быть проблемой?
У меня есть следующие .ssh файлы:
-rw-r--r--. 1 jenkins jenkins 89 Apr 25 11:18 config
-rw-r--r--. 1 jenkins jenkins 137 Apr 24 13:56 environment
-rw-------. 1 jenkins jenkins 1766 Apr 24 13:54 id_rsa
-rw-r--r--. 1 jenkins jenkins 425 Apr 24 13:54 id_rsa.pub
-rw-r--r--. 1 jenkins jenkins 806 Apr 25 12:06 known_hosts
drwx------. 2 jenkins jenkins 85 Apr 25 12:05 .ssh
Ответы
Ответ 1
Я подозреваю, что вы добавили ssh-ключи своему пользователю, а не пользователю jenkins.
По умолчанию Jenkins запускается пользователем Jenkins, домашний каталог которого (по умолчанию) /var/lib/jenkins
. Чтобы проверить мою гипотезу, пожалуйста, войдите как пользователь jenkins:
su jenkins
и позвоните:
git -c core.askpass=true ls-remote -h [email protected]:myproject.git HEAD
чтобы проверить, вернется ли ошибка.
У вас должен быть каталог /var/lib/jenkins/.ssh
содержащий правильные ключи ssh
. Вам нужно будет добавить id_rsa.pub
из этого каталога в свою учетную запись на bitbucket.
Далее в настройке задания просто установите:
Repository URL: [email protected]:ntti3/gtip.git
Credentials: - none -
Описанная конфигурация работает для моего Jenkins с bitbucket.
Также убедитесь, что в каталоге .ssh установлены правильные права доступа. Ssh не любит "слишком открытые" каталоги:
-rw------- 1 jenkins jenkins 407 Apr 14 14:14 authorized_keys
-rw------- 1 jenkins jenkins 1676 Nov 25 16:37 id_rsa
-rw-rw-r-- 1 jenkins jenkins 400 Nov 25 16:38 id_rsa.pub
-rw-r--r-- 1 jenkins jenkins 3096 Feb 11 12:11 known_hosts
drwx------ 2 jenkins jenkins 4096 Apr 14 14:14 .ssh
Ответ 2
В моем случае проблема имела какое-то отношение к тому, что пользователь jenkins уже создан с домашним каталогом /home/jenkins, а затем установил jenkins как root. Возможно, это создало некоторую путаницу между тем, был ли домашний каталог /var/lib/jenkins (как обычно) и /home/jenkins. Исправлено:
- userdel jenkins # Удалить пользователя jenkins
- rm -rf/home/jenkins; rm -rf/var/lib/jenkins # Удалить предыдущие джинкины dirs
- Установите jenkins снова как обычный процесс, который создает пользователя jenkins.
- mkdir/var/lib/jenkins/.ssh; chmod 700/var/lib/jenkins/.ssh
- cd/var/lib/jenkins/.ssh
- Создайте keypair, используя ssh-keygen, добавьте ключ к битбакету и т.д.
- Создание учетных данных в jenkins для новоиспеченного файла id_rsa
- Создание нового проекта для использования плагина git с файлом репозитория url и id_rsa.pub
Спасибо за помощь.
Ответ 3
В моем случае проблемой был отпечаток ключа RSA. Я добавил ключ ssh для пользователя Jenkins, как описано в документации, но получил то же сообщение об ошибке. Я решил это, войдя как пользователь Jenkins, используя
sudo su jenkins
Затем я набрал следующий
git -c core.askpass=true ls-remote -h ssh://[email protected]/PROJECT/REPO.git HEAD
И получил следующее сообщение
The authenticity of host 'SERVER ([IP_ADDRESS]:PORT)' can't be established. RSA key fingerprint is 11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff:ff. Are you sure you want to continue connecting (yes/no)?
Отвечая "да" на этот вопрос, сервер Bitbucket добавляется в список известных хостов, и это действительно решило мою проблему.
Ответ 4
для ssh.bash
ssh -K ${PATH}/.ssh2/id_rsa_2048_b $*
export GIT_SSH = ${PATH}/ssh.bash