web-dev-qa-db-fra.com

Comment accéder au dépôt GIT avec ma clé privée à partir de Dockerfile

J'essaie d'ajouter une clé privée dans mon conteneur Docker qui a accès à mes référentiels git privés. Le fichier testing_git se trouve dans le dossier contenant Dockerfile. J'essaie de créer un conteneur qui peut extraire du code git à la volée.

Voici mon 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

Production:

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

Ainsi, lorsque j'utilise la même clé, je pouvais accéder à mon référentiel.

Quelqu'un peut-il me dire ce qui me manque?

29
Amit Badheka

Le message d'erreur Host key verification failed. ne se plaint pas de votre clé privée, mais plutôt de la clé d'hôte de github.com. Vous pouvez le faire pour ajouter la clé d'hôte github:

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

Vous avez peut-être vos raisons, mais en général, le clonage du dépôt git dans l'image n'est pas le moyen préféré d'exécuter votre code dans un conteneur. Au lieu de cela, placez un Dockerfile à la racine de votre référentiel et dans le Dockerfile, utilisez la commande ADD pour inclure votre code source dans le conteneur.

Comme vous l'avez écrit maintenant, votre clé privée fait partie de l'image Docker. Toute personne avec laquelle vous partagez l'image aura également votre clé privée.

61
Ben Whaley