2

Почему с помощью ssh -R можно выделить свободный порт, указав «0», а с помощью ssh -L вам нужно указать действительный свободный порт?

Я хочу, чтобы SSH использовал локальный свободный порт для FWD удаленного трафика, не завися от свободных хаков портов

Из справочных страниц

-R [bind_address:] порт: хост: хост

Если аргумент порта равен 0, порт прослушивания будет динамически выделяться на сервере и сообщаться клиенту во время выполнения.

Но -L не дает такой возможности :(

-L [bind_address:] порт: хост: хост порт

Указывает, что данный порт на локальном (клиентском) хосте должен быть перенаправлен на данный хост и порт на удаленной стороне .....

1 ответ1

2

SSH свяжется с L-указанным портом и прослушивает его для произвольных клиентов, инициирующих соединения (и для пакетов в уже установленных соединениях, пересылающих их на удаленные серверы, но это не имеет значения в контексте этого вопроса).

Чтобы инициировать соединение, клиент должен указать номер порта, на котором сервер прослушивает такие запросы. Если такой порт выбран произвольно, клиент не знает его и, следовательно, не может инициировать соединение.

Для -R это не проблема, так как удаленный сервер не будет принимать никакое соединение с этим портом, кроме соединения с локального сервера (который знает номер порта из аргумента -R ).

После установления начального соединения дополнительные динамически назначенные порты могут быть согласованы (таким образом, известны) как клиентом, так и сервером для фактического трафика.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .