Как сделать удаленное соединение (туннель ssh) с putty/ssh?

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

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

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

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

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

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

2 ответа

Решение

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

НАСТРОЙКА 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 также принимает соединение от других хостов.

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

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

Другие вопросы по тегам