SSH для сервера за брандмауэром

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

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

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

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

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

Спасибо!

Ответы

Ответ 1

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

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

client$ ssh -p 9091 localhost

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

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

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

Ответ 2

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

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

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