2

Я управляю сервером Jenkins CI, работающим в Ubuntu 14.04, с несколькими требованиями:

  • В заданиях используется проверка подлинности с открытым / закрытым ключом для обеспечения безопасности, поэтому в ssh-agent должна быть добавлена идентификация перед их выполнением
  • Наши файлы закрытых ключей должны быть защищены парольной фразой
  • Мы не можем хранить эту фразу-пароль в небезопасном месте (например, исходный код скрипта или файлы конфигурации Jenkins)

В идеале, я хочу ssh-add и ввести фразу-пароль порядка одного за перезагрузку. Но я не могу понять, как заставить Jenkins CI выполнять свои задания таким образом, чтобы использовать преимущества этой аутентификации.

Можно ли заставить Дженкинса заранее использовать идентификаторы, добавленные в ssh-agent?
Есть ли альтернативная стратегия, которую я здесь не вижу?

1 ответ1

2

Запустите ssh-agent со статическим путем к сокету под тем же UID, который использует Jenkins:

sudo -u jenkins ssh-agent -a /tmp/ssh-agent.jenkins

Убедитесь, что переменная окружения $SSH_AUTH_SOCK указывает на этот путь. Вы захотите установить его 1) вручную перед тем, как ssh-add'ing добавит ваши ключи, и 2) в скрипте запуска Jenkins (например, /etc/init.d/jenkins или эквивалентный):

export SSH_AUTH_SOCK="/tmp/ssh-agent.jenkins"

sudo -E -u jenkins ssh-add ...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .