Clone Git com ssh na construção de imagem do docker

Clone Git com ssh na construção de imagem do docker

Estou construindo uma imagem docker e quero clonar um repositório do bitbucket.

Se eu criar um contêiner `debian' e executar passo a passo, tudo funcionará bem. Mas quando tento criar a imagem, não funciona.

Eu adicionei a chave às configurações do bitbucket.

Aqui está o meuDockerfile

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

Aqui está o erro:

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.

Como posso criar esta imagem para funcionar corretamente?

Responder1

Se você tiver certeza de que a chave pública correta está no bitbucket, a resposta (na minha experiência) é quase sempre as permissões na pasta .ssh e nos arquivos contidos nela. Vejo acima que você acabou de criar essa pasta e a chave privada, mas não atualiza as permissões.

Permissões esperadas

.ssh deve ser:

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

A chave privada:

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

Finalmente, seu diretório inicial não deve, no mínimo, ser gravável por grupo ou outro, geralmente você deseja:

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

Juntando tudo:

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

informação relacionada