Перенаправление портов через ssh

Введение

Перенаправление портов бывает двух типов:

  • Local Port Forwarding
  • Remote Port Forwarding

Различаются они направлением. Для первого типа на локальной машине открывается порт, а все данные с него перенаправляются на удаленный хост, который уже подключается на указанный адрес и порт. Для второго все наоборот.

Для установки локального или удаленного перенаправления используется команда ssh с параметром -L или -R соотвественно. После него указывается значение вида <локальный порт>:<адрес назначения>:<порт назначения>, а затем указывается адрес хоста.

Пример 1

Если на удаленном хосте server.ru запущена, например, база данных MySQL, а доступ извне на эту машину по порту 3306 закрыт, но есть доступ по SSH, то для подключения можно перенаправить этот порт следующим образом:

sudo ssh -L 3306:localhost:3306 user@server.ru

В этом случае весь трафик локальной машины на адрес localhost:3306 будет перенаправлен на localhost:3306 удаленного хоста server.ru

Пример 2

Если же какой-то сервис обращается к вашему хосту server.ru (или же сервер делает это сам и обращается сам к себе), но вы при этом хотите, чтобы обращение шло к вашей локальной машине, то можно воспользоваться следующей командой:

sudo ssh -R 2222:localhost:3333 user@server.ru

В этом случае все, кто будут обращаться к server:2222 на самом деле будут перенаправлены на localhost:3333 вашей локальной машины.