Доступ из Jenkins (в образе Docker) к репозиторию BitBucket

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

Сценарий:

  • Jenkins установлен на удаленной машине AWS, доступ к которой есть только через определенный адрес VPN.
  • Обычная учетная запись BitBucket с доступом к репозиториям ro с использованием ключей SSH

Где я застрял?

В самой начальной части, чтобы получить доступ к каталогу, выполните следующие действия:

  1. Создал ключи с помощью команды linux ssh keygen и поместил открытый ключ в настройки безопасности репозитория Bitbucket.

  2. после входа в Jenkins я начинаю новую задачу, затем собираю Freestyle и иду

  3. Внутри задачи я нажал «Настройки», перейдите в «Конфигурации исходного кода», выберите git и поместите репозиторий как: [email protected]:my_company/my_repo.git

  4. В учетных данных я нажимаю «Добавить/Дженкинс:» и настраиваю «Вид» как «Имя пользователя SSH с закрытым ключом», записываю свое имя пользователя, в «Закрытом ключе» нажимаю «Ввести напрямую» и вставляю свой закрытый ключ SSH в поле, завершаю нажатие в «ДОБАВИТЬ».

  5. Я выбираю новые созданные учетные данные...

В чем проблема?

получить КРАСНОЕ сообщение об ошибке - и не могу получить доступ к репозиторию BitBucket:

Failed to connect to repository : Command "git ls-remote -h -- [email protected]:cryptoblock/cblock1.git HEAD" returned status code 128:
stdout:
stderr: No RSA host key is known for bitbucket.org and you have requested strict checking.
Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Что я пробовал?

  • Я много раз пытался изменить сгенерированные ключи

  • Я попытался поместить закрытый ключ на машину, на которой размещен док-контейнер с jenkins.

  • Я вошел в контейнер с jenkins и поместил закрытый ключ в каталог /root/.ssh

  • Я вошел в контейнер с зарегистрированными разрешениями dave sudo jenkins для пользователя jenkins и поместил закрытый ключ в каталог ~/.ssh

  • найди этотответ, в котором говорится поставить команду

 jenkins@jenkins_host $ ssh-keyscan -H bitbucket.com >> ~/.ssh/known_hosts

Но я получаю ответ: bash: /var/jenkins_home/.ssh/known_hosts: Permission denied даже пытаюсь как sudo (изменение файла sudoers)

  • некоторые другие ответы, которые я нашел, связаны с https: методом доступа, и в репо, который мы используем в компании, разрешен только доступ по ssh

Что работает?

  • На этой удаленной машине, где установлен докер, ключи shh были правильно приняты, поскольку я могу нормально клонировать этот репозиторий с помощью git, так же, как и на своей частной машине, и во всех случаях я использовал один и тот же закрытый ключ ssh.

Это может помочь или нет, если вы уже искали ответы (см. первый ответ на этом сайте), community.atlassian.com/t5/Bitbucket-questions/…

mzm 09.12.2022 21:17
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
106
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

После некоторого исследования ответа @mzm я создаю решение, выполнив следующие шаги:

1 - Создайте пару ключей ssh ​​с помощью ssh-keygen

  • а) закрытый ключ переходит в Jenkins > Manage Credentials > вид: ключ SSH
  • б) открытый ключ (.pub) переходит в настройки безопасности репозитория Bitbucket

Затем:

2 - Установите Docker с Jenkins и запустите его докер

3 — на хосте (где работает докер) выполнить:

  • а) docker ps (получить идентификатор контейнера)
  • б) docker exec -u 0 -it <ID> /bin/bash
  • в) apt update
  • г) apt install sudo
  • д) apt install nano
  • е) sudo visudo
  • г) в открывшемся файле вставьте эту строку: jenkins ALL=(ALL) NOPASSWD:ALL
  • h) выйти из докера jenkins как root: exit

проверьте идентификатор докера jenkins с помощью docker ps

4 - Войдите в докер jenkins с помощью команды exec -it <ID> /bin/bash и выполните по порядку:

  • а) скопировать вывод консоли
  • б) создать папку: mkdir /var/jenkins_home/.ssh
  • в) войти в папку:cd /var/jenkins_home/.ssh
  • г) создать файл: touch known_hosts
  • д) поместить результат сканирования в созданный файл: ssh-keyscan -H bitbucket.org > known_hosts

После этого должно быть возможно подключение jenkins через ssh к Bitbucket.

Другие вопросы по теме