Назад | Перейти на главную страницу

Невозможно использовать ssh в контейнере докеров внутри удаленного экземпляра EC2 с частным IP

Я создал два экземпляра EC2 (назовем их клиентским и удаленным хостами) в одной частной подсети и запустил контейнер Docker внутри удаленного хоста.

Сам контейнер докеров является частью сети докеров с IP-адресом 192.168.125.2.

Я запустил sshd-сервер внутри этого контейнера и сопоставил порт 22 с 2201, внутри и снаружи контейнера соответственно.

Вот моя проблема: если я попытаюсь использовать ssh внутри контейнера докеров с клиентского хоста, используя мой общедоступный IP-адрес, например:

ssh -p 2201 username@PUBLIC_IP

Затем, даже если это займет много времени, я могу подключиться по ssh к контейнеру на удаленном хосте.

Если, однако, я попытаюсь ssh контейнер с клиентского хоста, используя частный IP

 ssh -p 2201 username@PUBLIC_IP

Я получаю ошибку тайм-аута и не могу получить доступ к контейнеру докера.

Я должен добавить, что если я попытаюсь ssh удаленного хоста с локального хоста (без доступа к контейнеру докера), например:

 ssh -p 22 username@PRIVATE_IP

тогда я могу ssh без проблем.

В чем может быть проблема? Как я могу ssh от моего клиента к контейнеру на моем удаленном хосте, используя частные IP-адреса?

Я добавил правила для входящего трафика, чтобы разрешить трафик для портов 2201 и 2202 из любого источника, отключил проверку IP источника / назначения, но все равно это не повлияло.

Спасибо.

ОБНОВЛЕНИЕ 1:

Вот результат для docker port <container_name>

5672/tcp -> 0.0.0.0:5672
7777/tcp -> 0.0.0.0:7777
22/tcp -> 0.0.0.0:2201

Я предлагаю сначала включить трафик icmp в группе безопасности и попробовать выполнить эхо-запрос с клиента на удаленный IP-адрес. В основном это не сработает, теперь в правиле ICMP добавьте IP-адрес источника в качестве имени "<>". Это обеспечит доступ между EC2, принадлежащим этой группе безопасности. Если это сработает, то аналогичным образом добавьте IP-адрес источника в качестве имени «<>» в вашем правиле 2201, а также в правиле 22. Затем попробуйте свой ssh, посмотрите, работает ли он