У меня есть сервер A, сидящий в сети A. Сервер A может подключаться к хосту-бастиону в сети B через ssh. Этот бастионный хост может подключиться к любому порту на любом сервере в сети B.
С любого сервера в сети A я хотел бы иметь возможность делать что-то вроде curl server-b
или ssh server-c
и перенаправить трафик через сервер A через бастион в сеть B и подключиться к server-b и server-c на правильных портах. Ничего страшного, если мне нужно указать прокси в команде, например: PROXY=server-a:8080 curl server-b
и т.д. (или порт на server-b или server-c, если на то пошло)
Я не могу создать сервер в сети B. Все, что у меня есть, - это доступ к бастиону.
Я предполагаю, что есть две части, которые необходимо настроить на сервере A: прокси-сервер и туннель ssh.
Я предполагаю, что для прокси-сервера я мог бы использовать что-то вроде squid и иметь прокси для localhost на любом порту, который я использую для туннеля ssh.
Но я не уверен, что делать с туннелем ssh
Обычно я инициирую туннель с помощью чего-то вроде:
ssh -L 8080:<X>:<Y> bastion
Но X и Y - переменные ... Я хочу иметь доступ к любому серверу в сети B. Мне нужен своего рода «общий» туннель ssh, и я не уверен, что он существует.
Для доступа к Bastion также требуется 2FA, поэтому я не могу динамически создавать новый туннель ssh каждый раз, когда хочу установить соединение с сервера в сети A на сервер в сети B.
(Да, у меня есть одобрение начальства на это, здесь это не имеет отношения и не должно быть упомянуто)