Назад | Перейти на главную страницу

Как получить общедоступный ssh-ключ на образе docker jenkins для аутентификации git?

я использую Докер и я использую образ Дженкинса. Изображение, которое я пытаюсь: https://github.com/orchardup/docker-jenkins

Мне нужно создать пару ключей ssh, чтобы я мог использовать ее для аутентификации в битбакете. Это сделано для того, чтобы Дженкинс мог вытащить мой исходный код и собрать его. Обычно я просто обращаюсь к пользователю jenkins и запускаю ssh-keygen для этого.

Я отредактировал файл запуска:

su jenkins

Это дает мне доступ к оболочке, где я могу запустить ssh-keygen для установки ключей ssh ​​в домашний каталог пользователя jenkins под ~/.ssh. После этого я выхожу, и Dockerfile продолжается. Этот домашний каталог /var/lib/jenkins который также смонтирован как том на хост-сервере.

Проблема в том, что здесь появляются ключи ssh, но они не работают. Есть идеи, как добиться этого лучше?

Спасибо

Я только что понял, что ты используешь git из вопроса, который я успел не заметить ...

Начиная с версии 2.0 «подключаемого модуля Git» учетные данные для определенных репозиториев можно добавить в раздел «Управление исходным кодом» самого теста. Должна быть метка под названием «Учетные данные», которая позволит вам использовать либо имя пользователя / пароль, либо комбинацию имени пользователя / личного ключа.

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

Ваш подход должен работать.

Вы можете сгенерировать ключи ssh на своем хост-компьютере (ssh-keygen). Пользователь не обязательно должен быть jenkins, это может быть любой другой пользователь.

После генерации ключей не забудьте поделиться им как томом с Jenkins Docker, чтобы /var/lib/jenkins/.ssh/ (в контейнере) содержал ключи хоста (id_rsa).

Вы также должны обязательно добавить сгенерированный открытый ключ (id_rsa.pub) в качестве «ключа SSH» для любого пользователя Bitbucket, у которого есть права делать то, что вам нравится, с помощью Jenkins.