SSH из контейнера на удаленный хост без установки OpenSSH-клиента - PullRequest
0 голосов
/ 01 мая 2019

У меня есть сценарий, когда на узле H1 выполняется док-контейнер C1, а на узле H2 (в той же сети) - док-контейнер C2.SSH между H1 и H2 настроен с аутентификацией с открытым ключом.Мой вариант использования - возможность запустить скрипт на C2, вызвав команду из C1.Я могу добиться этого, настроив ssh на C1 (openssh-client), что включает копирование секретного ключа из H1 в каталог .ssh на C1, назначение ему соответствующих разрешений и последующий запуск ssh -t H2 docker exec C2 sh <script_name>.

*.1004 * Есть ли способ добиться этого без настройки клиента ssh в C1?

Я попытался создать того же пользователя U в C1, что и H1, который владеет закрытым ключом, с тем же groupID и userID, а затем попытался ssh'ing из C1 после входа в систему как этот пользователь, но это не сработало.

Я не уверен, что копирование закрытого ключа в образ контейнера с работающего хоста соответствует рекомендациям для докеров / vms.

1 Ответ

0 голосов
/ 01 мая 2019

Хорошо, основываясь на комментариях к вопросу, я бы предложил следующее.

Во-первых, вам определенно нужна пара закрытых / открытых ключей, которые контейнер может использовать, так или иначе. Без этого SSH, очевидно, не будет работать.

Однако вместо копирования закрытого ключа в контейнер вы можете смонтировать переменную окружения SSH_AUTH_SOCK со своего хост-компьютера в контейнер, где установлен клиент SSH. Если ваш хост-компьютер авторизован для подключения к вашей цели, контейнер тоже будет. Минимальный пример:

docker run --rm -it -v $SSH_AUTH_SOCK:/ssh-agent -e "SSH_AUTH_SOCK=/ssh-agent" --entrypoint sh panubo/sshd -c "ssh -o StrictHostKeyChecking=no [REMOTE_MACHINE_IP]"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...