7

Я пытаюсь сделать туннель между сервером и ноутбуком с Putty. Проблема в том, что у ноутбука нет общедоступного IP-адреса, поэтому необходимо установить обратное соединение. Но я действительно не знаю, как это сделать.

Позвольте мне продемонстрировать, что я хочу:

СЕРВЕР (ПОРТ:6000) ----------> НОУТБУК (ПОРТ:7000)

но так как у ноутбука нет публичного IP-адреса, я должен сделать как

СЕРВЕР (ПОРТ:6000) <---------- НОУТБУК (ПОРТ:7000)

Можете ли вы сказать мне, что я должен написать в качестве порта источника, назначения и т.д.

2 ответа2

8

Зависит от того, какую настройку вы хотите:

НАСТРОЙКА 1) сервер слушает

                              ssh tunel             LAN destination   
SERVER (listen on port 6000) ==========> LAPTOP -----> ip:port

(LAN-адресом также может быть localhost: порт для подключения самого ноутбука)

PUTTY SETUP: щелкните правой кнопкой мыши на заголовке окна putty, выберите Change settings / Tunnels и заполните:

source port: 6000
destination: ip:port (or hostname:port)
select "Remote"

SSH: ssh -R 6000: имя хоста: порт

НАСТРОЙКА 2) ноутбук слушает

                              ssh tunel              destination   
LAPTOP (listen on port 7000) ==========> SERVER -----> ip:port

опять же, местом назначения может быть localhost:port для подключения к самому серверу.

Установка PUTTY:

source port: 7000
destination: ip:port (or hostname:port)
select "Local"

SSH: SSH -L 7000: имя хоста: порт

В обоих случаях вы также можете указать (в замазке с помощью флажка), если прослушивающий LAPTOP/SERVER также принимает соединение от других хостов.

0

Направление ваших стрелок не зависит от того, какая машина имеет общедоступные 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. (Не беспокойтесь о разнице; я должен искать ее в руководстве каждый раз, когда мне это нужно.)

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