Клонирование Git с помощью ssh в сборке образа Docker

Клонирование Git с помощью ssh в сборке образа Docker

Я создаю образ Docker и хочу клонировать репозиторий из Bitbucket.

Если я создаю контейнер `debian' и выполняю пошагово, то все работает нормально. Но когда я пытаюсь создать образ, он не работает.

Я добавил ключ в настройки Bitbucket.

Вот мойDockerfile

FROM debian:stretch

RUN apt-get update && apt-get -y upgrade && apt-get -y install nginx curl software-properties-common gnupg git
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
RUN apt-get install -y nodejs

RUN mkdir /backend

RUN npm install pm2 ts-node -g

WORKDIR /backend
RUN mkdir /root/.ssh
RUN echo -e "-----BEGIN RSA PRIVATE KEY-----\n(...)-----END RSA PRIVATE KEY-----" >> /root/.ssh/id_rsa
RUN chmod 400 /root/.ssh/id_rsa
RUN ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts
RUN git clone [email protected]:xxx/xxx.git

Вот ошибка:

Cloning into 'xxx'...
Warning: Permanently added the RSA host key for IP address '104.192.143.3' to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

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

Как мне создать это изображение, чтобы оно работало правильно?

решение1

Если вы уверены, что правильный открытый ключ находится в bitbucket, ответ (по моему опыту) почти всегда заключается в разрешениях на папку .ssh и файлы внутри. Я вижу выше, что вы просто создаете эту папку и закрытый ключ внутри, но не обновляете разрешения.

Ожидаемые разрешения

.ssh должен быть:

drwx------  2 user user 4096 Feb  6 11:18 .ssh

Закрытый ключ:

-rw-------  1 user user 1675 Feb  6 11:18 id_rsa

Наконец, ваш домашний каталог должен быть как минимум недоступен для записи ни группе, ни другим лицам. Обычно требуется:

drwx------ 84 user user 16384 Feb 16 18:23 user

Собираем все вместе:

chmod go-w /root
chmod 700 /root/.ssh
chmod 600 /root/.ssh/id_rsa

Связанный контент