Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to access GIT repo with my private key from Dockerfile

I am trying to add a private key in my Docker container which has access to my private git repositories. The testing_git file is in the folder containing Dockerfile. I am trying to make a container which can pull git code on the fly.

This is my Dockerfile:

FROM ubuntu:14.04.1 WORKDIR ~/.ssh RUN apt-get -y install ssh WORKDIR /var/www/html Run apt-get -y install git RUN mkdir ~/.ssh ADD id_rsa /home/id_rsa RUN cat /home/id_rsa && mv /home/id_rsa ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa && eval "$(ssh-agent -s)"  && ssh-add ~/.ssh/id_rsa && ssh-add -l && ssh-add -L && echo "Host github.com\n\tIdentityFile ~/.ssh/id_rsa" >> /root/.ssh/config &&  git clone [email protected]:amitbadheka/Learning-Rails 

Output:

Step 9 : RUN mkdir ~/.ssh ---> Using cache ---> 38f2824f41d6 Step 10 : ADD id_rsa /home/id_rsa ---> Using cache ---> afae372c6a40 Step 11 : RUN cat /home/id_rsa && mv /home/id_rsa ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa && eval "$(ssh-agent -s)"  && ssh-add ~/.ssh/id_rsa && ssh-add -l && ssh-add -L && echo "Host github.com\n\tIdentityFile ~/.ssh/id_rsa" >> /root/.ssh/config &&  git clone [email protected]:amitbadheka/Learning-Rails.git ---> Running in edd6778a0ae6 -----BEGIN RSA PRIVATE KEY----- MY PRIVATE KEY -----END RSA PRIVATE KEY----- Agent pid 12 Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa) 2048 69:41:88:d2:5f:22:fa:63:92:2b:f9:b8:a4:1e:3c:24 /root/.ssh/id_rsa (RSA) ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrfPuszAriGJxGd16TVeWBvCt8lj88OlJ0fz5LYd2voWDUDnEmPDpvQUDZKQI+MlFfhPS+KN239XsL4X1+vdyj8xXzcBeUB+DUYW2bxZd0kLsmOPeJ0Htoat12fdjzIC/m+H+j6SkAwL+WrV/vH+tbjNZVrl+zcMvBsZipyrKHmJiwko/cqACRYGRXAAUahnVTfhQGXArqn3ioxNN5r6ZDPdv+xGZY4V9fTbHbDooEHaOz/EFu6xwoBFC2SBID3aKEQgS6C07/iRt1fJ8c8TPPvJt6vLJQ/h5LLsN2WRxDG+V5fCGqWKDdJWoyM+fOuCNOH1XTDka8d+2ZN2v+U1KX /root/.ssh/id_rsa Cloning into 'Learning-Rails'... **Host key verification failed.** **fatal: Could not read from remote repository.** Please make sure you have the correct access rights and the repository exists. 2014/12/15 18:20:47 The command [/bin/sh -c cat /home/id_rsa && mv /home/id_rsa ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa && eval "$(ssh-agent -s)"  && ssh-add ~/.ssh/id_rsa && ssh-add -l && ssh-add -L && echo "Host github.com\n\tIdentityFile ~/.ssh/id_rsa" >> /root/.ssh/config &&  git clone [email protected]:amitbadheka/Learning-Rails.git] returned a non-zero code: 128 

So when I use the same key, I could access my repo.

Can anyone tell me what I am missing?

like image 1000
Amit Badheka Avatar asked Dec 15 '14 10:12

Amit Badheka


People also ask

How do I use GitHub Dockerfile secrets?

Add your Docker ID as a secret to GitHub. Navigate to your GitHub repository and click Settings > Secrets > New secret. Create a new secret with the name DOCKER_HUB_USERNAME and your Docker ID as value. Create a new Personal Access Token (PAT).


1 Answers

The error message Host key verification failed. is not complaining about your private key, but rather the host key for github.com. You can do this to add the github hostkey:

ssh-keyscan -t rsa github.com > ~/.ssh/known_hosts 

Perhaps you have your reasons, but in general cloning the git repo in to the image is not the preferred way to run your code in a container. Instead, put a Dockerfile at the root of your repo, and within the Dockerfile use the ADD command to include your source code in the container.

As you have it written now, your private key is part of the Docker image. Anyone you share the image with will also have your private key.

like image 191
Ben Whaley Avatar answered Sep 20 '22 16:09

Ben Whaley