簡體   English   中英

無法讓Docker克隆私人git倉庫

[英]Cannot get docker to clone private git repos

我有一個駐留在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倉庫。 使用此代碼,我收到以下錯誤

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-add被調用時ssh-agent被殺死。 但是,有了這個,當密鑰是未加密的密鑰時,我會收到Enter passphrase for /root/.ssh/id_rsa

我花了幾個小時解決了這個問題,結果發現需要上面編輯的代碼,但主要問題不是ssh-agent或其他任何問題。 我在dockerfile中將私鑰作為默認變量傳遞,因此我將所有換行符都退格了。

事實證明, 私鑰中的新行很重要

添加一堆\\n以在私鑰中創建換行符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM