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