Git клон с помощью SSH в сборке образа 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 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 ответ
Если вы уверены, что правильный открытый ключ находится в 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