Направление ваших стрелок не зависит от того, какая машина имеет общедоступные IP-адреса с возможностью маршрутизации - вам нужно знать, в каком направлении вы хотите, чтобы ваша стрелка шла, исходя из проблемы, которую вы пытаетесь решить. Соединение всегда будет инициироваться с вашего ноутбука (поскольку оно не может быть адресовано напрямую с другого компьютера), но вы будете использовать один или другой аргумент переадресации соединения, основанный на том, как вы хотите, чтобы переадресация портов работала.
Так как я не знаю putty
, я дам соответствующие команды от OpenSSH ; надеюсь, будет легко найти соответствующие опции в окнах конфигурации графического интерфейса putty
.
Если вы хотите, чтобы соединения с laptop:7000
пересылались на server:6000
, то вы можете использовать ssh -L 7000:server:6000
. Если соединения происходят на вашем ноутбуке, вы можете слегка изменить это на: ssh -L localhost:7000:server:6000
. Это ограничивает порт вашего ноутбука подключениями, инициированными на самом ноутбуке.
С помощью этой команды программа на сервере должна прослушивать порт 6000
для соединений. Программы на вашем ноутбуке (или в другом месте вашей локальной сети) должны иметь возможность подключаться к локальному localhost:7000
(или не маршрутизируемый адрес вашей машины, порт 7000
), чтобы инициировать соединение.
Если вы хотите, чтобы соединения с server:6000
были перенаправлены на laptop:7000
, то вы можете использовать ssh -R 6000:localhost:7000
. По умолчанию это открыто только для подключений, инициированных на сервере. Если вы хотите, чтобы он был открыт для всех машин, которые могут связаться с сервером, вы можете использовать ssh -R *:6000:localhost:7000
.
С помощью этой команды программа на ноутбуке должна прослушивать порт 7000
для соединений. Программы на вашем сервере (или в другом месте в сети сервера) должны иметь возможность подключиться к server:6000
(или маршрутизируемый адрес сервера, порт 6000
), чтобы инициировать соединение.
Мне потребовались годы, чтобы понять разницу между переадресацией -L
и -R
. -L
говорит , что программы будут пытаться подключиться L ocally и -R
говорит , что программы будут пытаться подключиться R emotely. (Не беспокойтесь о разнице; я должен искать ее в руководстве каждый раз, когда мне это нужно.)