2014-12-15 2 views
15

개인 전용 저장소에 액세스 할 수있는 개인 키를 Docker 컨테이너에 추가하려고합니다. testing_git 파일은 Dockerfile이 들어있는 폴더에 있습니다. 나는 파리에 자식 코드를 가져올 수있는 컨테이너를 만들려고합니다.Dockerfile에서 내 개인 키로 GIT repo에 액세스하는 방법

이 내 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 

출력 : 나도 같은 키를 사용할 때

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 

그래서, 내 REPO에 액세스 할 수 있습니다.

내가 누락 된 내용을 누구에게 말해 줄 수 있습니까?

+4

개인 키 (id_rsa)를 사용하지 마십시오. – qkrijger

+0

@qkrijger github 그것의 외모에 의해서만, 사용자 이름 "git"을 필요로하는 서비스 aha –

답변

40

오류 메시지 Host key verification failed.은 개인 키에 대해 불평하지 않고 github.com의 호스트 키에 대해 불평하지 않습니다. 당신은 github에의 호스트 키를 추가하려면이 작업을 수행 할 수 있습니다

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

은 아마 당신이 당신의 이유가 있지만, 일반적으로 이미지에 자식의 repo를 복제하는 것은 용기에 코드를 실행할 수있는 좋은 방법이 아니다. 대신 Dockerfile을 저장소의 루트에 놓고 Dockerfile 내에서 ADD 명령을 사용하여 컨테이너에 소스 코드를 포함시킵니다.

지금 작성 했으므로 개인 키는 Docker 이미지의 일부입니다. 이미지를 공유하는 사람은 누구나 비공개 키를 갖게됩니다.

+2

조언 해 주셔서 감사합니다. 나는 도커로 실험하고 있습니다. 나는 이것을 마음 속에 지킬 것이다 –

+0

@BenWhaley, 왜 컨테이너 안에 코드를 가져 오는 것이 선호되지 않는지에 대해 자세히 설명 할 수 있겠는가? – jeesus

+0

나는 cmake를 실행하기위한 도커 컨테이너를 만들고 있습니다. 빌드하는 동안 github에서 소스를 복제하고, 빌드하고, 소스를 삭제해야합니다. (실제로 .ssh 디렉토리 전체와 .gitconfig). 나는 이것이 괜찮다고 생각한다. 포스터의 주장에 따라 개인 키가 새지 않는 작은 이미지가 있습니다. –

관련 문제