Клон Git з ssh в збірці зображень докера


1

Я будую зображення докера, і хочу клонувати сховище з бітбукета.

Якщо я створю контейнер `debian 'і виконую покроково, все працює добре. Але коли я намагаюся створити образ, це не працює.

Я додав ключ до налаштувань біт-кода.

Ось моя 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 git@bitbucket.org: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

Якщо ви впевнені, що правильний відкритий ключ знаходиться у бітбукеті, відповідь (на мій досвід) майже завжди є дозволами на папку .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

1
Щоб бути параноїком, можна сказати touch /root/.ssh/id_rsa && chmod 600 /root/.ssh/id_rsa && echo -e "-----BEGIN RSA PRIVATE KEY-----\n(...)-----END RSA PRIVATE KEY-----" >> /root/.ssh/id_rsa, щоб уникнути наявності конфіденційних даних у файлі, який читається у світі, навіть для мікросекунди.
Скотт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.