2014-12-15 17 views
15

Ich versuche, einen privaten Schlüssel in meinem Docker-Container hinzufügen, der Zugriff auf meine private Git-Repositories hat. Die Datei test_git befindet sich in dem Ordner, der Dockerfile enthält. Ich versuche, einen Container zu machen, der Git Code im laufenden Betrieb ziehen kann.Zugriff auf GIT Repo mit meinem privaten Schlüssel von Dockerfile

Das ist mein 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 

Ausgang:

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 

Also, wenn ich den gleichen Schlüssel verwenden, konnte ich meine Repo zugreifen.

Kann mir jemand sagen, was ich vermisse?

+4

Bitte sagen Sie mir, dass Sie diesen privaten Schlüssel (id_rsa) für nichts verwenden! – qkrijger

+0

@qkrijger github nach dem Aussehen, der Dienst, der nur den Benutzernamen "git" aha –

Antwort

40

Die Fehlermeldung Host key verification failed. beschwert sich nicht über Ihren privaten Schlüssel, sondern den Host-Schlüssel für github.com. Sie können dies tun, um die Github hostkey hinzuzufügen:

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

Vielleicht haben Sie Ihre Gründe, aber im Allgemeinen, um das Bild, das git Repo-Klonen ist nicht die bevorzugte Art und Weise Ihres Code in einem Behälter zu laufen. Platzieren Sie stattdessen eine Dockerdatei im Stammverzeichnis Ihres Repos, und verwenden Sie in der Dockerdatei den Befehl ADD, um den Quellcode in den Container aufzunehmen.

Wie Sie es jetzt geschrieben haben, ist Ihr privater Schlüssel Teil des Docker-Images. Jeder, mit dem Sie das Bild teilen, hat auch Ihren privaten Schlüssel.

+2

Vielen Dank für den Rat, ich experimentiere mit docker. Ich werde das im Hinterkopf behalten –

+0

@BenWhaley, könnten Sie näher erläutern, warum es nicht die bevorzugte Methode ist, den Code in den Container zu ziehen? – jeesus

+0

Ich baue einen Docker Container zum Ausführen von cmake. Während des Builds muss ich die Quelle von Github klonen, sie erstellen und anschließend die Quelle löschen (und in der Tat das gesamte .ssh-Verzeichnis und meine .gitconfig). Ich denke, das ist in Ordnung. Ich habe ein kleines Bild, das meine privaten Schlüssel nicht leckt, wie die Behauptung vom Plakat behauptet. –

Verwandte Themen