Контекст Docker как использовать определенный ключ ssh

#docker

#docker

Вопрос:

Я хотел бы использовать контекст docker для связи с сервером через ssh. У меня есть несколько разных ключей ssh на моем локальном компьютере. Как мне указать контексту использовать определенный ключ? Я пробовал:

 docker context create test --docker "host=ssh://<username>@<ip-of-server>,key=C:/path/to/key"
  

но без кубиков, он всегда запрашивает пароль. Есть ли способ указать контексту docker, какой ключ ssh использовать?

Комментарии:

1. Вы активировали созданный контекст? docker context ls тогда docker context use <context-name> ?

2. Да, иначе он не запрашивал бы мой пароль при выполнении команд, верно? Примером является docker --context=test service ls

Ответ №1:

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

Docker использует ваш локальный SSH-агент. Любые ключи, загруженные в ваш агент, будут доступны для подключения:

  • если его еще нет, установите SSH-агент;
  • сгенерируйте пару ключей SSH;
  • добавьте закрытый ключ к агенту SSH на компьютере, с которого вы хотите выполнять команды docker;
  • добавьте открытый ключ на целевой хост-машине Docker в <username-home>/.ssh/authorized_keys
  • теперь попробуйте обычный SSH на целевом хосте Docker ( ssh <username>@<ip-of-server> ). Примите отпечаток пальца. Если у вас не запрашивают пароль, docker также не будет запрашивать его.

Создайте и активируйте контекст docker, затем запустите фиктивную команду docker:

 docker context create test --docker "host=ssh://<username>@<ip-of-server>"
docker context use test
docker ps
  

Комментарии:

1. Это немного более раздражает, чем просто возможность указать атрибут -i для использования, но это сработало. Спасибо!

2. Справедливости ради, вы также можете настроить ключ (и многие другие параметры) в ~/.ssh/config или /etc/ssh/ssh_config (или их эквивалентах Windows, если вы не используете Linux): ssh.com/ssh/config . Это будет работать с Docker CLI, но не с docker-compose или vscode docker plugin (и, возможно, другими), хотя разработчики говорят, что в конечном итоге они это реализуют.

3. У меня это не сработало > Предупреждение: переменная среды DOCKER_HOST переопределяет активный контекст. Чтобы использовать «test», либо установите флаг global —context, либо снимите значение переменной среды DOCKER_HOST

4. У меня это тоже не сработало — я получаю «Не удается подключиться к демону Docker в docker.example.com . Запущен ли демон docker?» сообщение об ошибке при попытке подключения по SSH