2

У меня установлено расширение Xdebug PHP в контейнере Docker, который запускает PHP-FPM моей среды разработки и тестирования.

Клиент отладки (один встроенный PhpStorm) прослушивает порт 9000 на моей локальной машине Windows.

Когда я устанавливаю сервер SSH внутри своего контейнера PHP-FPM и использую PuTTY для создания обратного туннеля SSH, который указывает от локального порта внутри контейнера PHP-FPM на порт 9000 на моем компьютере с Windows, Xdebug прекрасно подключается к PhpStorm.

Но по понятным причинам я не хочу, чтобы SSH-сервер работал внутри моего контейнера PHP-FPM. Но я не могу получить доступ к порту на моем хосте, когда создаю обратный туннель SSH, указывающий от хоста (а не внутри контейнера) к моей машине Windows.

Чтобы проверить это, я установил telnet внутри контейнера. Когда я запускаю telnet вне контейнера, можно подключиться к порту, но изнутри контейнера PHP-FPM порт недоступен, независимо от того, пытаюсь ли я подключиться к 127.0.0.1 или 172.17.0.1 (Docker IP моего хоста). ).

Я понял, что это имеет смысл, поскольку невозможно получить доступ к устройству обратной связи из контейнера, если оно работает в режиме моста. Когда я запускаю контейнер с "--net = host", возможно подключиться через 127.0.0.1, но из соображений безопасности мне нужны мои контейнеры для работы в режиме моста.

Этот ответ предлагает установить "GatewayPorts yes" в моих настройках OpenSSH, но я не хочу открывать свои обратные порты для общественности. Как я могу получить доступ к порту (и только к этому порту - не ко всему устройству обратной связи) обратного туннеля SSH на устройстве обратной связи хоста из контейнера Docker?

0