Не знаю, как назвать вопрос, но ситуация следующая:
У меня 3 сервера:
USER
, TUNNEL
, TARGET
на TUNNEL
Я запускаю команду
TUNNEL:~$ ssh -nNT -L 0.0.0.0:22222:localhost:22 TARGET
что позволяет мне использовать ssh из USER
к TARGET
подключившись к TUNNEL
в порту 22222
USER:~$ ssh TUNNEL -p 22222
Вопрос: из TARGET
точки зрения, будет ли соединение казаться исходящим от USER
или TUNNEL
?
Насколько сложно это настроить и попробовать? Например, используя $SSH_CONNECTION
переменная окружения:
USER:~$ ssh TUNNEL -p 22222 'echo $SSH_CONNECTION'
Но первое соединение создает переадресацию портов, которая прозрачна для приложения, которое его использует. Таким образом, второе TCP-соединение начинается на машине USER, достигает машины TUNNEL и оттуда прозрачно перенаправляется на машину TARGET. Итак, как только TARGET спросит, откуда происходит соединение, он получит реальный публичный IP-адрес USER.
Если вы подключаетесь к серверу через перенаправленный порт, он будет считаться исходящим локально.
СОВЕТ: Вы можете напрямую подключиться к цели, используя ProxyJump. Его можно использовать как $ ssh -J user@TUNNEL user@TARGET
. Если у вас более старая версия клиента openssh, вы можете использовать ProxyCommand.