Доступ к приватному репо из докера с использованием ключей shh, сгенерированных с помощью ключевой фразы - PullRequest
0 голосов
/ 26 июня 2018

У нас есть частное репозиторий в bitbucket, и мы пытались получить к нему доступ через npm, и смогли выполнить локальную установку как git clone, так и npm. Но когда мы пытаемся сделать то же самое в Docker-контейнере, он выдает ошибку, говорящую 'Host key verification failed', поэтому нам пришлось добавить known_hosts (это тот, который позволяет клиенту аутентифицировать сервер), который решил проблему, а затем он бросил другой из-за ошибки Permission denied (publickey) и нам пришлось добавить ключи id_rsa и id_rsa.pub, поэтому мы создали папку (потому что для доступа к папке .ssh нам нужен sudo cmd, который мы не хотим использовать) на компьютере со всеми тремя ключами и в файле Docker, используя скрипт bash, мы пытаемся получить эти ключи, скопировать их в хранилище и передать их в Docker во время работы Docker (удаление ключей SSH после завершения, так как мы не хотим хранить ключи в хранилище) контейнер, и он все еще выдал ошибку, говорящую Permission denied (publickey). Через несколько часов мы обнаружили, что это связано с парольной фразой закрытого ключа (id_rsa) ssh, и сгенерировали sshkeys без ключевой фразы, и, наконец, мы можем запустить приложение без каких-либо проблем. Но я думаю, что небезопасно иметь ключи ssh без ключевой фразы. Теперь мой вопрос: есть ли какая-нибудь команда / хак, которая может игнорировать приглашение парольной фразы (которое используется для создания ключей ssh ​​id_rsa, id_rsa.pub)? Потому что я хочу создать свои ключи с парольной фразой, но хочу, чтобы docker проигнорировал ее и попал в bitbucket для установки моего частного репозитория. ниже приведены шаги, которым мы следовали.

1. generate ssh keys using `ssh-keygen -t rsa -b 4096 -C 
   "your_email@example.com"` 
2. this will prompt for passphrase (optional)
3. if you provide passphrase it will create your sshkyes with encryption
4. else your key will be without encryption
5. create a folder in your local machine (e.g. keys)
6. Use bash script (create a bash file in your repo)  to copy your 
   keys from local folder into a repository folder ( e.g sshkeys) as 
   shown below
      if [[ -f "/keys/id_rsa" ]]; then
        echo "keys exists!"
        cp -r /keys/. sshkeys/
       exit 0
      fi  

7. make sure you have git and ssh installed in your docker if not use 
   below command 

   apt-get install -y git ssh

8. And then in your docker file add the below code to copy sshkeys to
   docker root/.ssh

      RUN mkdir -p ~/.ssh
      ADD sshkeys/. /root/.ssh/
      RUN chmod 600 ~/.ssh/*
9. That's it, these steps are enough to install private repo and run it 
   in docker 

Вопрос: Как избежать запроса пароля в докере и установить репо? Я пробовал большинство опций, предложенных в stackoverflow и github , но, похоже, ничто не помогает мне пропустить приглашение парольной фразы в докере.

1 Ответ

0 голосов
/ 27 июня 2018

Вы всегда можете снова удалить ключи позже ... но почему бы сначала не клонировать репо с хоста сборки?

Вариант 1 Клонируйте или извлекайте нужные файлы с помощью скрипта на хост:

git clone ssh://git@myhost.com/myrepo.git

Тогда в вашем Dockerfile:

COPY myrepo /

Вариант 2 Сгенерируйте новый ключ и назначьте его пользователю, имеющему доступ только для чтения, затем скопируйте этот ключ в изображение. На хосте:

ssh-keygen -f k1 -t rsa -b 2048 -P ''

Затем в Dockerfile

RUN mkdir /root/.ssh
COPY id_rsa* /root/.ssh/
RUN echo -e "Host: myhost.com\nStrictHostKeyChecking no" >> /etc/ssh/ssh_config
RUN git clone ssh://git@myhost.com/myrepo.git
RUN rm -rf /root/.ssh  # remove the keys from the image

Конечно, вы также можете проверить

man ssh_config

и

man ssh

Дополнительные параметры, такие как использование ключей хоста вместо пользовательских ключей, использование различных путей и имен для ключей или указание их в командной строке.

Также

man ssh-keygen

Конечно. Это показывает, что внутри контейнера для набора универсально совместимых ключей вы можете сделать:

ssh-keygen -A
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...