Псевдо-VPN при помощи проброса портов по ssh

Часто из мира нужно обратиться к каким-то внутриофисным ресурсам. Обычно для этого поднимается VPN. Но если таких ресурсов не много (например только внутриофисный веб-портал, который не желательно публиковать в интернете) вполне можно обойтись и без VPN.

Для этого делается всего-навсего проброс порта по ssh.

Для начала делаем авторизацию по ключу на сервере-шлюзе.

Далее на рабочей станции запустить в консоле строку:

ssh -N -L 2080:resource.localdomain:80 user@officegateway

Разберем эту строку:

-N — установить соединение не открывая консоль

-L 2080:resource.localdomain:80 — локальный порт 2080 пробросить на компьютер внутри сети resource.localdomain на порт 80

Значение локального порта нужно ставить высоким. На привилегированные порты можно настроить проброс только с правами root.

   

После этого осталось только в браузере открыть ссылку

http://localhost:2080

и мы получаем доступ к ресурсу внутри сети.

При чем соединение будет вполне безопасное, так как шифруется внутри ssh-соединения.

   

Для автоматизации всего этого можно написать скрипт.

#/bin/sh

#Узнаем, какой у нас браузер по умолчанию

browser=`ls -l /etc/alternatives/x-www-browser |awk '{print $10}'`

#Смотрим, не было ли раньше установлено соединение

is_connect=`netstat -lnp| grep 2080`

   

wmbrowser=`echo $browser| awk -F/ '{print $4}'`

   

if [ "$is_connect" = "" ];

then

# Если соединение еще не установлено - устанавливаем

ssh -N -L 2080:resource.localdomain:80 user@officegateway &

fi;

   

#Открываем в браузере ссылку

$browser http://localhost:2080

# И если окно браузера неактивное — делаем его активным.

wmctrl -a $wmbrowser

Теперь при запуске этого скрипта сразу откроется нужная страница на нужном сервере. У себя я его вообще на хоткей повесил.

Если рабочая станция под виндой, это все тоже можно реализовать при помощи Putty