![Clon de Git con ssh en la compilación de imágenes de Docker](https://rvso.com/image/1552393/Clon%20de%20Git%20con%20ssh%20en%20la%20compilaci%C3%B3n%20de%20im%C3%A1genes%20de%20Docker.png)
Estoy creando una imagen de Docker y quiero clonar un repositorio de Bitbucket.
Si creo un contenedor `debian' y lo ejecuto paso a paso, todo funciona bien. Pero cuando intento crear la imagen, no funciona.
Agregué la clave a la configuración de Bitbucket.
Aquí está miDockerfile
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
Aquí está el error:
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.
¿Cómo puedo crear esta imagen para que funcione correctamente?
Respuesta1
Si está seguro de que la clave pública correcta está en Bitbucket, la respuesta (en mi experiencia) casi siempre son los permisos en la carpeta .ssh y los archivos que contiene. Veo arriba que simplemente crea esa carpeta y la clave privada que contiene, pero no actualiza los permisos.
Permisos esperados
.ssh debería ser:
drwx------ 2 user user 4096 Feb 6 11:18 .ssh
La clave privada:
-rw------- 1 user user 1675 Feb 6 11:18 id_rsa
Finalmente, al menos no se debe poder escribir en su directorio de inicio por grupo u otro; generalmente lo que desea es:
drwx------ 84 user user 16384 Feb 16 18:23 user
Poniendolo todo junto:
chmod go-w /root
chmod 700 /root/.ssh
chmod 600 /root/.ssh/id_rsa