Я создаю образ 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