2012-01-10 3 views
14

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

Я изучил туннелирование/обратное туннелирование, но это, по-видимому, решения для переадресации портов, которые не будут работать, поскольку брандмауэр запрещает все соединения на всех портах.

В идеале я хотел бы сделать это в Рубине (с помощью Net :: SSH гем), таким образом, что вместо открытия нового соединения, как:

Net::SSH.start('host', 'user', :password => "password") 

я мог как-то привязать к существующему тоннелю.

Спасибо!

ответ

25

Это довольно просто, если у вас есть контроль над сервером. Я дам версию командной строки, и вы можете работать, что ни в какие рамки вы хотите:

server$ ssh -R 9091:localhost:22 client.example.egg 

client$ ssh -p 9091 localhost 

Сервер устанавливает соединение с клиентом первым, который начинает слушать на EMOTE конца «R» (т.е. клиент) на порт 9091 (что-то я только что составил) и перенаправляет эти соединения на localhost:22, то есть на ssh-сервер на себя.

Клиент должен просто подключиться к своему локальному порту 9091, который прозрачно перенаправляется на сервер ssh сервера.

Это, как правило, приводит к хаосу к проверке открытого ключа (и соблюдению безопасности!), Поскольку клиент ssh клиента не знает, что localhost:9091 совпадает с server:22. Если ваш клиент является Putty, тогда у вас есть возможность указать «реальное» имя сервера где-нибудь, чтобы учетные данные можно было правильно искать.

+0

Есть ли способ, которым вы могли бы подстановить эту фигуру на локальном ходу. Мой IP-адрес меняется, и я хочу всегда иметь возможность ssh на сервере. У меня уже установлен dns resolver – MichaelH

+0

@MichaelH: Я не уверен, что понимаю. Вы не можете поддерживать TCP-соединения, если IP-адрес одного из сверстников меняется ... –

+0

можно также туннелировать http через это? – Will

0

Если вы не можете создать (и поддерживать) туннель из хоста, с которым вы пытаетесь подключиться первым (что позволит вам затем подключиться через этот туннель), вы не сможете. Это точка брандмауэра: предотвращение несанкционированного доступа к сети.

Однако брандмауэр не должен блокировать туннель, хотя он точно зависит от того, как управляется туннель. Туннель переадресации портов, созданный с использованием ssh's tunneling features, может подорвать брандмауэр. Однако это может также вызвать у вас проблемы с администратором удаленной сети.

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

Смежные вопросы