Проброс порта с помощью SSH
Материал из Belgorod Linux User Group - Белгород.
Содержание |
[править] Проброс удаленного порта
Сам честно говоря не знаю почему удаленного, наверное потому что параметр -R, но если смотреть с машины от которой мы делаем проброс - он получается локальным.
Ситуации в которых может пригодится это решение:
[править] проброс SSH через SSH
- Наша машина (назовем ее машина Home) находится к примеру за NAT, не имея статичного IP, а мы на нее хотим иногда заходить по SSH с другого места (с работы к примеру).
То нам необходимо пробросить локальный порт SSH машины Home на удаленную машину Example, которую видно и из Home и с Work. Как правило это машина, имеющая внешний IP, пусть www.example.com. Для этого с машины Home делаем команду:
ssh -N -R 2022:localhost:22 user@www.example.com
Данной командой мы соединяемся из Home на машину www.example.com под пользователем user и открываем там порт 2022, который будет являться пробросом порта localhost:22 на порт 2022 машины Example.
Теперь, чтобы нам зайти на машину Home, необходимо с машины Example подключиться к порту 2022.
ssh root@localhost -p 2022
Тут мы пользователем root попадаем на Home.
[править] проброс TCP приложения через SSH
- На удаленной машине стоит firewall и закрывает все порты, а нам надо подключиться к какому-либо приложению (к примеру к СУБД, на порту 5432).
Аналогично вышеописанной ситуации используем команду на закрытой машине, соединяясь с доступной:
ssh -N -R 5432:localhost:5432 user@192.168.0.12
Теперь на машине 192.168.0.12 будет слушаться 127.0.0.1:5432, и подключившись к нему мы получим базу данных с удаленной машины.
[править] Проброс локального порта
Хороший пример проброса локального порта на на удаленную машину:
ssh -N -R 8080:localhost:80 user@www.example.com
И теперь у нас на порту localhost:8080 висит страница с сайта www.example.com.
Этот же пример можно использовать как альтернативу проброса удаленного порта (соединение с БД) примером выше. Разница только в том - с какой машины делается проброс - с удаленной или с локальной.
[править] Проброс динамического порта
С помощью этого проброса мы можем соединяться с любым портом.
[править] Web серфинг через другую машину
Хороший пример проброса динамического порта - серфинг через другую машину. Поучается SOCKS-proxy:
ssh -D 8080 user@server.example
Далее в своем браузере выставляем "Использовать SOCKS proxy" и указываем адресс и порт: localhost:8080. В результате мы браузем интернет от лица server.example.
[править] Совет
Если соединение будет часто или постоянно использоваться, довольно полезно записать строку проброса в /etc/inittab
st:3:respawn:ssh -N -R 2022:localhost:22 user@www.example.com -p 22
init q
Тогда связь будет поддерживаться постоянно, и при обрыве - подниматься заново. А авторизацию пользователя сделать по ключу.

