Настройка открытых ключей ssh ​​на образе Docker

Я устанавливаю образ Docker, который поддерживает ssh. Ничего страшного, много примеров. Однако в большинстве примеров показано, как установить пароль с помощью passwd. Я хочу распространять свой образ. Наличие фиксированного пароля, особенно для root, кажется зияющей дырой в безопасности. Для меня лучше настроить образ с root без пароля. Когда пользователь получает образ, он копирует свой общедоступный файл ssh в файл образа /root/.ssh/authorized_keys.

Есть ли рекомендуемый способ сделать это?

  1. Предоставить Dockerfile, основанный на моем образе, с командой ADD, которую пользователь может редактировать?
  2. Предоставить сценарий оболочки, который запускает что-то вроде «cat ~/.ssh/authorized_keys | docker run -i sh -c 'cat > root/.ssh/authorized_keys»?

person EricGreg    schedule 02.01.2014    source источник
comment
Другой вариант — использовать docker run -t -i -v /root/.ssh:/root/.ssh:ro yourimage. Но это работает только для каталога .ssh пользователя root, потому что идентификаторы пользователей на хосте/контейнере должны совпадать :(   -  person Jiri    schedule 03.01.2014


Ответы (1)


Как насчет создания закрытого ключа и отображения его пользователю?

Я использую этот фрагмент как часть сценария точки входа для изображения:

KEYGEN=/usr/bin/ssh-keygen
KEYFILE=/root/.ssh/id_rsa

if [ ! -f $KEYFILE ]; then
  $KEYGEN -q -t rsa -N "" -f $KEYFILE
  cat $KEYFILE.pub >> /root/.ssh/authorized_keys
fi

echo "== Use this private key to log in =="
cat $KEYFILE
person R. Max    schedule 07.01.2014