2013-04-29 3 views
4

Я столкнулся с несколькими услугами туннелирования в обратном порту, например http://progrium.com/localtunnel. Я понимаю, что они позволяют мне легко настраивать обратный туннель с SSH-портами, который позволяет мне показывать мой локальный веб-сервер в сети (например, я запускаю приложение Rails локально на порт 3000 и используя службу localtunnel, я могу поделиться им с кем-то в сети с URL-адресом например, xhd3s.localtunnel.com.)Несколько туннелей обратного порта SSH на одном и том же удаленном хосте и порту

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

Как они принимают обозначенный субдомен и переводят его в уникальный туннель, используя тот же порт? Я подозреваю, что в игре есть какое-то волшебство веб-сервера, но я не совсем уверен, как это будет работать.

EDIT:

Другими словами, я хотел бы быть в состоянии выдавать эти команды из двух разных компьютеров:

# first computer 
ssh -R 9000:localhost:3000 [email protected]cvs.myserver.com 

# second computer 
ssh -R 9000:localhost:3000 [email protected] 

Что делать на myserver.com, чтобы оба эти обратные портовые туннели работают на порте 9000?

ответ

2

Я провел некоторое время с этим вопросом. Теперь я полагаю, что ошибочно полагают, что удаленные SSH-туннели настроены на работу с одним и тем же портом на удаленном сервере.

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

Я предполагал, что SSH туннели были все, используя тот же порт, поскольку все соединения к субдомен-е изд URL, которые предположительно были происходит на порт 80. Тем не менее, если вы настроите прокси прохождение в вашем веб-сервере, вы можете пересылать трафик на другой порт на сервере.

Вот некоторые доказательства концепции Nginx прокси мимоходом:

server { 
    listen 80; 
    server_name xcvs.myserver.com; 

    location/{ 
     proxy_pass http://127.0.0.1:5222; 
    } 
} 


server { 
    listen 80; 
    server_name csde.myserver.com; 

    location/{ 
     proxy_pass http://127.0.0.1:5223; 
    } 
} 

Таким образом, трафик этих двух различных подобластей на порту 80 проксированном в разные порты, которые затем можно использовать для установки SSH-туннели.

Однако в настройке все еще немного тайны. При настройке туннель с сервисом как localtunnel, вы выдаете команду вроде:

$ localtunnel 3000 

Я думаю, что это бьет сервер, получить обратно новый номер порта и поддомен пару, а затем выдавать команды удаленного SSH туннеля с этими значениями для вас.

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