У меня есть образ докера, хранящийся в реестре контейнеров частного облака IBM.Оттуда он извлекается и собирается удаленно для развертывания в кластере 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.
РЕДАКТИРОВАТЬ: На основе другогоИтак, вопрос, я изменил пару строк в моем 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
, когда ключ является незашифрованным ключом.