SSH туннелирование

Протокол SSH позволяет не только удалённо работать на текстовой консоли и туннелировать X11 для работы с графикой.

В частности, SSH можно также использовать для получения доступа к TCP-порту 1) сервера, к которому было произведено подключение по SSH, либо сервера, доступного по сети с этого сервера. При этом с точки зрения подключающегося пользователя всё выглядит так, как будто этот порт находится на его собственном компьютере (на IP-адресе 127.0.0.1), но, возможно, имеет какой-то другой номер (что как правило непринципиально для работы)2). Эта технология называется 'локальный проброс порта' (local port forwarding).

Пример использования: пользователь кластера может подключиться по SSH к интерфейсному серверу и затем получить доступ к серверу лицензий на программное обеспечение, работающему внутри локальной сети кластера и недоступному из Интернет напрямую.

Пользователям операционной системы Windows-семейства для создания туннелей рекомендуется использовать утилиту 'plink' из состава дистрибутива putty.


Пример скрипта для Windows, осуществляющего туннелирование портов 1718 и 1719 сервера 10.10.0.211, находящегося в сети кластера, в локальные порты 11718 и 11719 соответственно:

@echo off

SET [LOGIN]="логин@имя_интерфейсного_сервера"
SET [KEY]="C:\Documents and Settings\user\nusc.ppk"

plink.exe -v -i %[KEY]% -N %[LOGIN]% ^
	-L 11718:10.10.0.211:1718 ^
	-L 11719:10.10.0.211:1719

После его запуска:

  1. Если закрытая часть ключа не загружена в pageant.exe, то потребуется ввести ключевую фразу.
  2. Должно появиться окно с выводом, заканчивающимся так:
    Access granted
    Local port 11718 forwarding to 10.10.0.211:1718
    Local port 11719 forwarding to 10.10.0.211:1719

Затем это окно нужно свернуть (именно свернуть, а не закрывать, т.к. закрытие приведёт к разрыву SSH-соединения) и держать в таком состоянии все время, пока требуется работа туннеля. По завершению работы окно следует закрыть.


Реальные IP адреса серверов и номера портов для каждого конкретного случая при необходимости будут сообщаться администрацией ИВЦ.


1)
Порт - ресурс операционной системы, определяемый числом от 0 до 65535, выделяемый приложению для взаимодействия по сети. Например, SSH-сервера как правило ждут подключения на порту 22, http-сервера - на порту 80.
2)
Иногда номер порта можно сохранить, а иногда может оказаться, что на машине пользователя порт с этим номером уже используется. Список используемых в данный момент портов на операционной системе Windows-семейства можно узнать командой 'netstat -an -p tcp' - смотреть на число после двоеточия во втором столбце.