Разрешение запрещено (открытый ключ) во время извлечения из GitHub с пользователем Jenkins на Ubuntu
Вот моя настройка:
- Jenkins работает на моей Linux-машине как пользователь jenkins.
- Я создал пару ключей ssh, как описано в Linux - Setup Git, для пользователя jenkins.
- Когда я
sudo su jenkins
и попробую ssh -vT [email protected]
, я всегда спрашиваю свою кодовую фразу, но я всегда в конце концов аутентифицирован. (параметр verbose показывает, какой ключ используется, среди прочих).
- Я мог бы клонировать свое репо из GitHub, используя jenkins:
Thusly:
[email protected]:~/jobs/test git/workspace$ git pull
Enter passphrase for key '/var/lib/jenkins/.ssh/id*_rsa':
Already up-to-date.
До этого момента я следил за инструкциями к письму. Проблема в том, что сбой Jenkins с ошибкой:
status code 128:
stdout:
stderr: Permission denied (publickey).
fatal: The remote end hung up unexpectedly
Это та же ошибка, что и я, когда я опечатываю парольную фразу (но, разумеется, Дженкинс не спрашивает у меня парольную фразу). Следующие страницы:
укажите мне, что ssh-agent может помочь запомнить кодовую фразу, которую он делает, когда я использую своего пользователя, но не идентификатор jenkins. Обратите внимание, что во время работы, когда мой обычный пользователь дает:
echo "$SSH_AUTH_SOCK"
/tmp/keyring-nQlwf9/ssh
При выполнении той же команды, что и мои "дженкинсы" ничего не дают (даже разрешение не разрешено)
Мое понимание проблемы заключается в том, что кодовая фраза не запоминается.
Есть ли у вас какие-либо идеи?
Должен ли я запускать ssh-agent или менеджер ключей для пользователя jenkins? Как?
Или пересылка ssh подходит для пересылки на ту же машину?
Любая яркая идея?
ps: Я никогда sudo gitted
, я всегда пользовался jenkins или моей учетной записью пользователя (как упоминалось в этом сообщении SO - Проблема Ubuntu/GitHub SSH Key)
p >
Ответы
Ответ 1
Поскольку никто не написал ответ из комментариев в течение нескольких месяцев, я быстро это сделаю.
Существует 2 возможных проблемы/решения:
Ответ 2
Я обошел эту проблему, просто оставив парольную фразу пустой при создании ключей.
Ответ 3
Подводя итог тому, что должно быть сделано на сервере Jenkins:
# 1. Create the folder containing the SSH keys if necessary
if [ ! -e ~jenkins/.ssh ]; then mkdir ~jenkins/.ssh; fi
cd ~jenkins/.ssh/
# 2. Create the SSH pair of keys
# The comment will help to identify the SSH key on target systems
ssh-keygen -C "jenkins" -f ~jenkins/.ssh/id_rsa -P ""
# 3. Assign the proper access rights
chown -R jenkins ~jenkins/.ssh/
chmod 700 ~jenkins/.ssh
chmod 600 ~jenkins/.ssh/*
Помните:
- При создании ключей сохраняйте имя "id_rsa" по умолчанию, так как другие, такие как "id_rsa_jenkins", не будут работать даже при правильной настройке.
- Не используйте кодовую фразу для вашего ключа
- Убедитесь, что открытый ключ (id_rsa.pub) загружен на сервере git (GitHub, Bitbucket и т.д.). После этого проверьте свой SSH-ключ, выполнив:
ssh -vvv [email protected]
(измените адрес в соответствии с вашим сервером git)
Ответ 4
Я бы добавил, что если вы создали ключи вручную, они все равно могут принадлежать вам и не читаются jenkins, попробуйте:
sudo chown jenkins -R /var/lib/jenkins/.ssh/*
Ответ 5
Если вы запускаете jenkins в качестве службы в Windows, вам необходимо проверить пользователя, выполняющего службу. Если вы создали ключи, используя пользователя "MACHINENAME\user", измените службу, чтобы пользователь, запускающий ее, мог соответствовать
Ответ 6
Для проверки выполните следующие действия:
- если правильный открытый ключ (id_rsa.pub) загружен на сервер git.
- Пользователь jenkins получит доступ к github → CHECK , если правый закрытый ключ (id_rsa) будет скопирован в /var/lib/jenkins/.ssh/
- если файл known_hosts создается внутри папки ~/.ssh. Попробуйте ssh -vvv git @github.com, чтобы просмотреть журналы отладки. Если все будет хорошо, github.com будет добавлен к known_hosts.
- , если для разрешения id_rsa установлено значение 755 (chmod 755 id_rsa)
После всех проверок → try ssh -vvv git @github.com
Не пытайтесь делать конфиг в jenkins до тех пор, пока ssh не будет работать!
Ответ 7
Для пользователей Mac проблема может быть решена путем удаления существующих ключей и создания новых частных и открытых ключей, выполнив следующие шаги:
1. Удалите все общедоступные и закрытые ключи, расположенные в /Users/Username/.ssh
2.Уставьте все учетные данные, сохраненные на вкладке Учетные данные в Jenkins.
3. Удалите существующие общедоступные SSH-ключи, определенные в настройках хранилища Github.
4. Создайте новые SSH-ключи (private и public: id_rsa и id_rsa.pub), выполнив шаги https://confluence.atlassian.com/bitbucketserver/creating-ssh-keys-776639788.html#CreatingSSHkeys-CreatinganSSHkeyonLinux&MacOSX
5.Установите вновь созданный открытый SSH-ключ (id_rsa.pub) в Github или эквивалентных настройках репозитория.
6. В Jenkins создайте новые учетные данные, добавив закрытый SSH-ключ (id_rsa) для вашего имени пользователя Github.
7. Ошибка теперь должна быть удалена.