Проброс порта с помощью 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

Тогда связь будет поддерживаться постоянно, и при обрыве - подниматься заново. А авторизацию пользователя сделать по ключу.

Личные инструменты