FreeSource : Stati/KratkoOboVsjom/AdminoverSSH

Проброс портов с помощью ssh (ssh tunneling)

Проброс порта с удалённой машины на нашу машину

Предположим, что имеется сервер в Internet, и мы имеем доступ только к порту 22 (ssh), и на этом сервере крутится apache, который слушает на 127.0.0.1:8080, где находится alterator (веб-интерфейс).

Теперь на своей рабочей станции выполняем:


После успешного входа в систему вы получите терминал удаленного сервера и alterator, доступный на 127.0.0.1:9090, т.е. https://localhost:9090/

Таким образом, можно пробросить к себе любой порт с удаленного сервера, например, порт SQL-сервера и т.д.

P.S. Если добавить к команде ssh ключ -Y, то тогда вы сможете выполнить графическую программу на удаленном сервере так, что результат работы будет отображаться на экране вашей рабочей станции.

Проброс порта с нашей машины на удалённую машину

Предположим, что имеется некая ЛВС, в которой есть наша машина. Она имеет выход в интернет через роутер, который осуществляет трансляцию сетевых адресов (NAT), т.е. белого IP на машине нет. К тому же, роутер подключен к Internet по ADSL, и к тому же используется протокол PPPoE, адреса выдаются динамические.
Но нам тем не менее нужен доступ на эту машину из вне.

Выход – автоматически поддерживать туннель между этой машиной и нашим внешним хостом. При изменении IP на роутере туннель должен восстанавливаться автоматически.

В такой ситуации можно воспользоваться ssh с опцией -R для того, чтобы пробросить локальный sshd с нашей «серой» машины на какой-либо порт удалённой машины:


Эта команда пробрасывает локальный сокет 127.0.0.1:22 «серой» машины на порт 2200 удалённой машины. Т.е. чтобы теперь зайти по ssh из вне на «серую» машину, достаточно выполнить на удалённой машине команду:


Для автоматического поддержания туннеля можно воспользоваться пакетом autossh.
Рабочий пример скрипта находится в /usr/share/doc/autossh-1.4a/autossh.host, там же находится README.

Страницы, ссылающиеся на данную: Sysadmin