Разрешение запрещено (открытый ключ) во время извлечения из 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. Ошибка теперь должна быть удалена.