2008-05-10

SSH-туннель

Пару дней назад решал вопрос по подключению к удаленному MySQL серверу через SSH-туннель. По этому поводу решил разродиться короткой памяткой (для себя, для вас) о том как этот тунель организовать под Linux. Уверен, что установить и запустить SSH демон на сервере у вас не составит труда, так же вы уже установили клиент на своем клиенте. Вообще, все очень просто. Ни сервер, ни клиент, которые вы хотите подружить через туннель (я говорю о ПО, а не о машинах как таковых), не должны быть специально обучены работать с туннелем, они и знать о нем не будут. Все будет работать в штатном режиме, как будто и нет никакого туннеля. Что ж, делаем в своем любимом терминале, на клиентской машине, так:
$ ssh -f -N -L4787:example.org:8787 user@server.org

Все, теперь несколько комментариев:

  • 4787 - Этот порт будет открыт на локальной машине, используйте его для доступа к вашему серверу приложения (MySQL, PostgreSQL и т.д.), используйте тот клиент, который предназначен для работы с этим сервером.

  • example.org:8787 - Это удаленный сервер, общение с которым вы и шифруете. Понимайте так, что порт 8787 (в данном примере) на удаленной машине будет транслироваться в 4787 на вашем клиенте.

  • user@server.org - Тут все как обычно. Это машина, на которой установлен SSH-сервер, user - пользователь на этом сервере. Шифрованный канал будет организован именно до этой машины, а вот от неё до example.org трафик шифроваться не будет, будет использован уже ваш сетевой протокол. Обычно example.org и server.org это один и тот же сервер (конечно же используется одно и то же имя или localhost вместо example.org).


По всем остальным ключам и, если вам нужны подробности, обращайтесь к man'у:
$ man ssh
Туннель можно сделать и с помощью PuTTY - почитайте инструкцию по подключению к MySQL, там все можно по скринам понять, если у вас с английским туго.

p.s. Совсем забыл. Респект и уважуха нашим ветеранам. Всех с праздником.

3 комментария:

Анонимный комментирует...

Долго искал, никто не мог одну команду написать. Спасибо :).

Анонимный комментирует...

а пробросить локальный порт на сервере, к локальному порту хоста вообще возможно?

bw комментирует...

Я в таких вопросах не силён.
Другой очевидный вариант, это VPN.