无法让docker克隆私有git repos

时间:2018-05-31 17:06:23

标签: git docker ssh

我有一个驻留在IBM私有云容器注册表上的docker镜像。从那里开始,它被远程获取和构建,以部署在Kubernetes集群上。安全性不是该注册表的问题所以目前我们将SSH密钥作为变量传递。我当前的Dockerfile如下:

FROM ubuntu:14.04
ARG SECRET_KEY="***"
ARG PUB_KEY="***"
RUN apt-get update
RUN apt-get install -y software-properties-common git ssh-client
RUN add-apt-repository ppa:deadsnakes/ppa
RUN apt-get update
RUN apt-get install -y python3-setuptools
RUN easy_install3 pip

RUN mkdir -p /app
COPY . /app
WORKDIR /app

RUN mkdir /root/.ssh
RUN echo "${SECRET_KEY}" > /root/.ssh/id_rsa
RUN echo "${PUB_KEY}" > /root/.ssh/authorized_keys
RUN ssh-keyscan git.ng.bluemix.net >> /root/.ssh/known_hosts

RUN chmod 600 /root/.ssh/id_rsa
RUN chmod 600 /root/.ssh/authorized_keys
RUN chmod 644 /root/.ssh/known_hosts
RUN chmod 755 /root/.ssh

RUN echo "IdentityFile ~/.ssh/id_rsa" >> /etc/ssh/ssh_config

RUN bash ./build.sh
RUN pip install -r requirements.txt
CMD ["python3", "-u", "updater.py"]

build.sh是一个bash脚本,它克隆了一些私有的git repos。使用此代码,我收到以下错误

Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

我查找了解决方案,他们参与了使用ssh-agent。使用eval $(ssh-agent -s)我得到Agent pid 8

但是,当我收到ssh-add -l或其他命令时,我收到了  Could not open a connection to your authentication agent.

编辑:根据不同的SO问题,我在Dockerfile中更改了几行

RUN eval `ssh-agent s` && \
    ssh-add /root/.ssh/id_rsa && \
    bash ./build.sh

当我读到ssh-agent被ssh-add被调用时被杀死。但是,有了这个,当密钥是未加密的密钥时,我会收到Enter passphrase for /root/.ssh/id_rsa

1 个答案:

答案 0 :(得分:0)

我花了好几个小时来解决这个问题,结果是我需要编辑上面的代码,主要问题不是ssh-agent或其他任何东西。我将我的私钥作为dockerfile中的默认变量传递,因此我对所有新行进行了反对。

原来,私钥中的新行很重要

添加一堆\n以在私钥中创建新行