Инкапсуляция сессии в SSH канал
23 Dec 2012 | Автор: dd |Не даром говорят о том, что лень является двигателем прогресса. В прекрасный субботний день мне надо было ехать к клиенту, у которого на площадке я установил новый NAS сервер от Synology, для того чтобы настроить его.
Но в какой то момент меня дико заломало туда ехать, и я стал раздумывать, как бы мне так все настроить, не отрывая задницу от стула. При том, что в офисе никого не было, и как следствие все компьютеры были выключены, то есть Teamviewer был недоступен, а пароль от VPN, откровенно говоря, я забыл.
Тут то мне в голову и пришла админская палочка-выручалочка, в качестве все того же SSH сервера, установленного в офисе клиента. Надо заметить, что SSH сервер, при некоторой сноровке становится весьма удобным инструментарием для работы. Выгрузку/загрузку файлов через канал SSH я уже описывал, но тут я вспомнил о том, что фактически любое соединение можно инкапсулировать в канал шифрованный SSH, используя технологию туннелирования. Для чего на стороне сервера достаточно иметь работающий SSH сервер, а на нашей стороне любой софт, способный этот туннель поддерживать, то есть сгодится как puTTY, так и SecureCRT которым я обычно и пользуюсь.
Настройка соединения элементарная:
для puTTY прописываем соединение, после чего идем в настройку Connection -> SSH, где отмечаем галку Enable Compression и переходим к настройке форварда портов, в разделе Connection -> SSH -> Tunnels где уже прописываем локальные порты и соответствующие им удаленные, в моем случае это были 80 и 5000 порты, так как веб-морда NAS перебрасывала обращение с 80 на 5000.
Для SecureCRT настройка тоже не сложная- идем в настройку соединения из основного меню, где в разделе Connection -> Port Forwarding добавляем маршруты и прописываем порты форвардинга. Теоретически в SecureCRT для локальной точки входа можно указать любой IP адрес, при обращении к которому будет происходить проброс соединения через SSH туннель, но я предпочел использовать для простоты также localhost.
После этого устанавливаем соединение через обращение к localhost по заданным портам, то есть в моем случае открываем в бродилке _http://127.0.0.1:80
Не скажу, что соединение работает вызывающе быстро, но однозначно это лучше чем по морозу пилить в удаленный офис, к тому же при включении компрессии, соединение значительно ускорилось, хотя конечно иногда недоумеваешь, ожидая отклика меню по 3-5 секунд. Также может подвисать и сама SSH сессия в терминальном клиенте, но мы всегда может открыть еще одно окно терминала, так как это не помешает нашей работе. Но, по-видимому, дело в нагрузке канала, так как проработав несколько часов обнаружил тот момент, что порою сессия по-скорости работает просто на 5+, то начинает тормозить, причем сам интернет, на моей стороне, работает исправно.
Для понимания портов, которые вам нужно прокинуть через SSH туннель, следует курить /etc/services и собственно те сервисы, к которым мы хотим получить доступ из вне.
В принципе это весьма удобный механизм, так как получить доступ можно практически ко всем сервисам внутри удаленной сети, главное иметь ssh доступ к серверу, подключенному внутрь локалки, напрямую или же через NAT- это не принципиально. И самое главное что такой вариант не требует никакой перенастройки на стороне SSH сервера.
Кстати, одно из удобств для меня, явилось то, что используя web доступ к NAS под Synology и встроенный в него браузер файлов File Station я получил удаленный доступ и к файлам на диске хранилища, которые смог скачивать через бродилку, а также и закачивать на NAS из дома.
Инкапсуляция сессии в SSH канал,Теги: ssh, Сетевые протоколы, Сети