Какая разница в функциональности между ними? Я немного смущен этим.
Локальная переадресация делает удаленный порт локально доступным.
Удаленная пересылка делает локальный порт удаленно доступным.
Но эта «доступность» будет работать в обоих направлениях ... или нет?
Например, следующее (выдается из хоста 'home')
ssh -R 1234:localhost:2345 user@work
Это создаст безопасный туннель между работой :: 1234 и домом :: 2345, верно?
Если я вставлю что-нибудь на одном конце, оно выйдет на другом конце.
Но тогда я могу добиться того же с помощью следующего вызова хоста «работа»:
ssh -L 1234:localhost:2345 user@home
Итак, единственная разница в том, откуда я это называю, правильно?
ssh
ssh-tunnel
nandaloo
источник
источник
Ответы:
Основное практическое отличие состоит в том, что при соединении 2 компьютеров A и B и B за брандмауэром или маршрутизатором NAT, который вы не контролируете, и он блокирует входящие. Вы сидите в точке A. Вы не можете получить A для подключения к B. Но B не будет блокировать исходящие .. Таким образом, вы получаете B для подключения к A.
- добавлено уточнение--
Вышеизложенное, понятное спрашивающему, означает основное практическое различие между локальной и удаленной пересылкой. ssh -L и ssh -R, когда вы используете каждый. Я не комментировал конкретные примеры команд, которые он давал, где он переключает -L и -R и к какому sshd-серверу он подключается. Но теперь я попытаюсь прокомментировать это. С помощью команд ssh, которые он дал, с точки зрения обычного клиента и обычного сервера, похоже, нет никакой разницы, так как он не говорит «ах, это клиент ssh и это ssh-сервер .. "он не знает ssh, и что является клиент-серверным аспектом ssh, не имеет значения и неизвестен как обычному клиенту, так и обычному серверу. Они просто заботятся о том, кто слушает, и с их точки зрения это выглядит одинаково. Рабочий компьютер слушает и на 1234. Они не Заметим, что в одном случае это ssh-сервер sshd.exe, а в другом - клиент ssh.exe, ssh. Кстати, где находится ssh-клиент, считается локальным.
источник
Да, если я правильно понимаю, переадресация локального порта с a на b должна быть идентична переадресации удаленного порта с b на a (и наоборот). Исходящий туннель от a до b (если смотреть от a) должен быть равен входящему туннелю от a до b (если смотреть от b).
Переадресация локального порта создает исходящий туннель, который можно использовать для подключения общедоступного интернет-компьютера к локальной машине. Локальный пользователь может получить доступ к комбинации удаленный хост: порт на локальном хосте, поскольку данный порт на локальном (клиентском) хосте перенаправляется на данный хост и порт на удаленной стороне:
Удаленная переадресация портов создает входящий туннель, который можно использовать для подключения локального компьютера к общедоступному Интернету. Пользователь Интернета может получить доступ к определенной комбинации локальный хост: порт на удаленном хосте. Данный порт на удаленном (серверном) хосте перенаправляется на данный хост и порт на локальной стороне:
источник
0x4a6f4672
значит?При переадресации локального порта вы (клиент) открываете прослушивающий сокет на своем компьютере и подключаете к нему сокет клиента уровня приложения. Теперь соединение пересылается через SSH на сервер. Сервер подключается к удаленному узлу и туннелирует данные от клиента протокола до конечного пункта назначения.
При удаленной переадресации портов сервер открывает прослушивающий сокет на хосте сервера. Некоторое удаленное приложение подключается к этому хосту и отправляет информацию, которая передается на ваш клиентский компьютер. Здесь устанавливается соединение с конечным пунктом назначения (некоторый сервер протокола уровня приложения, работающий на вашем компьютере или в вашей сети), и данные передаются из удаленного приложения в конечный пункт назначения.
источник
Это лучше всего понять на небольших примерах. В этих примерах соединения структурированы так:
Локальный сервер - (LAN) - Терминал ----- (SSH, обычно через Интернет) ----- Конечная точка туннеля - (LAN) - Удаленный компьютер
Вы используете переадресацию локального порта, если хотите туннелировать на определенную удаленную машину / порт, доступный через конечную точку туннеля, к которой у вас есть доступ по ssh. Therby, порт этой удаленной машины также доступен локально на вашем собственном терминале, то есть http: // localhost: terminal_port /.
Это делается с использованием следующего синтаксиса:
Вы можете использовать переадресацию удаленного порта, если хотите включить ЛЮБОГО (!) Удаленного, который может подключиться к порту прослушивания конечной точки туннеля, чтобы иметь возможность удаленного доступа к ip / порту в вашей локальной сети. К вашему локальному серверу похоже, что соединение с удаленного компьютера инициируется терминалом.
Синтаксис:
источник
Справочная страница для socat проясняет это очень хорошо. Да, я знаю, что ssh и socat - это две совершенно разные вещи, но документация socat просто очень хорошая.
источник