Как мне установить закрытый ssh-ключ для hudson / jenkins для доступа к bitbucket?

#mercurial #ssh #hudson #jenkins #bitbucket

#mercurial #ssh #хадсон #дженкинс #bitbucket

Вопрос:

Я пытаюсь настроить сервер Debian с Apache2 в качестве интерфейса для Tomcat 7 под управлением Jenkins — который работает — но я хочу, чтобы Jenkins отслеживал частный репозиторий Mercurial, размещенный в bitbucket, и я хотел бы использовать SSH. (Я пробовал использовать обычный https, но все еще безрезультатно — здесь есть ответ на вопрос SO, который рекомендует использовать ssh)

Я развернул Jenkins, используя возможность горячего развертывания Tomcat, удалив Jenkins .Файл войны в / webapps. Я могу сгенерировать пару открытых / приватных ключей на сервере и добавил свой открытый ключ к учетной записи bitbucket — но как мне заставить Дженкинса использовать мой приватный ключ для аутентификации при доступе к приватному репозиторию на bitbucket?

Я видел сообщение в блоге, в котором используется apt-get для установки Hudson в Debian, который создает пользователя Hudson (чтобы я мог добавить закрытый ключ для этого пользователя), но установка его через автоматическое развертывание tomcat не добавляет пользователя Jenkins. Если для Jenkins не настроен пользователь unix, могу ли я настроить тот, который Jenkins будет использовать при аутентификации?

Ответ №1:

Если вы можете управлять командной строкой mercurial из Jenkins, вы можете передать --ssh команду, чтобы сообщить mercurial, какую ssh-команду вызывать. Вероятно, сработало бы что-то подобное:

 hg --ssh '/usr/bin/ssh -i /path/to/private/key' ...
  

В качестве альтернативы вы можете выяснить, от имени какого пользователя работает Дженкинс (это должен быть какой-то пользователь), и поместить файл у этого пользователя ~/.ssh , даже если это /root/.ssh/

Комментарии:

1. Он запускается от имени пользователя tomcat, поэтому я сгенерировал для него пару ключей ssh, и теперь он подключается. Спасибо.

2. Я пытался сделать это для Windows, но работа Hudson просто останавливается. Я полагаю, что ожидает запроса пароля, потому что, выполняя это вручную, я должен ввести пароль закрытого ключа (TortoiseHg plinlk). Есть идеи?

3. Ах, да, для этого вам понадобится закрытый ключ без пароля. В качестве альтернативы вы можете использовать pagent и поддерживать его в рабочем состоянии, но ключ без пароля для автоматического пользователя является разумным, если вы не можете использовать его для получения полной оболочки.