2016-09-01 2 views
0

Я создаю приложение nodejs, которое будет интегрироваться с Git repo и выполнять такие операции, как push, pull commit и т. Д. Я сейчас перемещаю приложение в Docker. Однако я не могу найти способ поместить ключи ssh в изображение докера во время выполнения. Я хочу избежать копирования ключа ssh во время сборки в образ докеры из соображений безопасности.Вытащить ключи ssh в контейнере докера во время выполнения

Я попытался прохождения ключа SSH в качестве переменной окр во время выполнения, как:

docker run -i -t -e KEY="sshkey" imagename 

И в node.js создания папки SSH и SSH ключ

mkdirSync('/root/.ssh/', (err) => { 
    writeFileSync('/root/.ssh/id_rsa.pub', sshKey, (err) => { 
    }) 
}) 

Однако это Безразлично»вручную t, похоже, работает, я все еще получаю ошибки разрешения при попытке клонирования репо.

  1. Нужно ли что-то делать, чтобы загрузить ключи ssh, чтобы они могли использоваться git?
  2. Есть ли способ сделать это с помощью Dockerfile. Я знаю, что могу добавить его в build, time, но не нашел способ сделать это во время выполнения.
  3. Как я могу проверить fs работающего контейнера докеров?
+1

Не можете вы просто смонтировать тома/файл? –

ответ

0
  1. Вам нужно добавить ключ частного если вы хотите проверить подлинность с помощью SSH, а не вашего открытого ключа. В вашем случае это, вероятно, файл id_rsa. Открытый ключ используется сервером для проверки вашей личности.

  2. Dockerfile используется только для сборки, поэтому нет возможности использовать его во время выполнения. Я думаю, что ваш подход с переменным окружением разумно ...

  3. Вы можете подключить к контейнеру с помощью docker exec, откройте Баш и взаимодействовать с файловой системой, как вы это обычно:

    docker exec -it imagename /bin/bash 
    

    Это предполагает, что вы используете систему с bash. В противном случае попробуйте /bin/sh.

+0

Спасибо за это, используя переменные env и закрытый ключ. Несколько вещей, которые я должен был решить на случай, если кто-нибудь еще попытается: 1. создать файл ключа с помощью Dockerfile 2. предоставить правильные разрешения для файла, чтобы вы могли писать из своего приложения node.js – Alex

2

Следующий надуманный пример демонстрирует, как закрытый ключ на главной машине может считываться из контейнера.

docker run -it --rm -v ~/.ssh/id_rsa:/root/.ssh/id_rsa:ro ubuntu cat /root/.ssh/id_rsa 

Это должно позволить процессу, выполняемому как root, аутентифицироваться с вашими учетными данными.

0

Для не суперпользователя на хосте и грузчиком:

docker run -v /home/<host user>/.ssh:/home/<docker user>/.ssh <image> 
Смежные вопросы