Add private key to ssh-agent in docker file

I am trying to write a docker file for an angular cli project, but I have an external dependency that is a private repo on BitBucket, so I need to transfer my ssh key. I am trying to pass ssh keys using--build-arg

Now the problem is that it does not add these keys to ssh-agent and asks for a password instead.

I use this command to run docker build -t ng-2-docker/client --build-arg ssh_prv_key="$(cat ~/.ssh/id_rsa)" --build-arg ssh_pub_key="$(cat ~/.ssh/id_rsa)" .

and this is my docker file

ARG ssh_prv_key
ARG ssh_pub_key

# Use an official Node runtime as a parent image
FROM node:8.9.4

# Specify working directory in docker container
WORKDIR /app

# Authorize SSH Host
RUN mkdir -p /ssh/
RUN chmod 0700 /ssh

# Add the keys and set permissions
RUN echo "$ssh_prv_key" > /ssh/id_rsa && echo "$ssh_pub_key" > /ssh/id_rsa.pub && chmod 600 /ssh/id_rsa && chmod 600 /ssh/id_rsa.pub

# add bitbucket to known hosts
RUN ssh-keyscan bitbucket.org > /ssh/known_hosts

# Copy SSH key to temp folder to pull new code
# ADD ~/.ssh/id_rsa /tmp/
# RUN ssh-agent /tmp
RUN ls -la /ssh

# check if ssh agent is running or not, if not, run
RUN eval `ssh-agent -s` && ssh-add /ssh/id_rsa

# Copy local files into the containers working directory
COPY package.json /app

# Install dependencies inside container
RUN npm i

# Copy local files into the containers working directory
COPY . /app

# Execute Process
CMD ["npm", "docker:rogers:local"]

# Remove ssh key from temp
# RUN rm /tmp/id_rsa
RUN rm -rf /ssh

# expose port
EXPOSE 4200

and here is the result if I ran the above command.

enter image description here

+4
source share
2 answers

From your screenshot, the git -ssh client does not ask for the password of your bitpacket. Your private key file is encrypted with a passphrase. To use the private key, ssh will require a passphrase.

. ssh-keygen:

$ ssh-keygen -p

ssh-keygen

0

, - , ,

... , , Dockerfile:

# check if ssh agent is running or not, if not, run
RUN eval `ssh-agent -s` && ssh-add /ssh/id_rsa

ssh, / .

0

Source: https://habr.com/ru/post/1692269/


All Articles