Я нарисовал несколько набросков
Машина, на которой набрана команда ssh tunnel (или в вашем случае: Putty with tunneling запущена) называется « ваш хост» .
Вступление
местный: -L Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.
ssh -L sourcePort:forwardToHost:onPort connectToHost
означает: подключиться с помощью ssh к connectToHost
и перенаправить все попытки подключения на локальный sourcePort
порт onPort
на вызываемом компьютере, доступ к forwardToHost
которому можно получить с connectToHost
компьютера.
удаленный: -R Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side.
ssh -R sourcePort:forwardToHost:onPort connectToHost
означает: подключиться с помощью ssh connectToHost
и перенаправить все попытки подключения к удаленному sourcePort
порту onPort
на вызываемую машину, доступ к forwardToHost
которой можно получить с локальной машины.
Ваш пример
Первое изображение представляет вашу ситуацию. Синее поле называется your host
вашей машиной с Windows, с которой вы запускаете Putty на свой сервер Ubuntu, называемое remotehost
моим образом. Подключение к зеленому порту (в вашем случае номер порта 4000
) пересылается в розовый MySQL порт 3306
из localhost
вашего компьютера сервера Ubuntu (то есть сам сервер Ubuntu).
Чтобы установить его с Putty
Запустите Putty и введите свои обычные настройки соединения (имя хоста или IP-адрес). В дереве слева перейдите к
Подключение → SSH → Туннели
и создайте новый локальный туннель с исходным портом 4000
(123 на изображении) и местом назначения localhost:3306
(localhost: 456 на изображении).
Не забудьте нажать кнопку Добавить .
Затем вернитесь к сеансу и нажмите « Сохранить», чтобы сохранить настройки в следующий раз. Теперь вы можете использовать сохраненное соединение для входа на сервер и после успешного входа в систему каждый раз, когда вы подключаетесь к порту 4000 на вашем хосте, вы фактически подключаетесь к порту 3306 на сервере Ubuntu.
Простой ответ - да, но учтите, что на вашем компьютере фактически запущен туннель. Это работает так, что вы создаете SSH-соединение с сервером (которое является безопасным), а затем инструктируете SSH прослушивать порт на вашей стороне и перенаправлять любые входящие соединения - на конкретный порт с определенным адресом хоста на серверная сторона. Целевым объектом туннеля не обязательно должен быть тот же сервер - это может быть любой другой действительный адрес, который - в случае, если это не сервер, на котором работает сам сервер SSH - будет видеть входящее соединение, как если бы оно было получено с сервера SSH вместо от вашего клиента.
Чтобы настроить его, откройте диалоговое окно конфигурации Putty, выберите настройку соединения, которое вы обычно используете для доступа к вашему серверу, и нажмите «загрузить» (а не «открыть»). Затем в дереве слева перейдите к Connection-> SSH-> Tunnels и создайте новый «локальный» туннель с исходным портом 4000 и целевым «localhost: 3306» (поскольку адрес назначения разрешен на сервере, с точки зрения сервера порт MySQL находится на локальном хосте). Затем вернитесь к «сессии» и нажмите «Сохранить», чтобы сохранить настройки в следующий раз. Теперь вы можете использовать сохраненное соединение для входа на сервер и после успешного входа в систему каждый раз, когда вы подключаетесь к порту 4000 на вашем компьютере, вы фактически подключаетесь к порту 3306 на сервере.
Если вы серьезно относитесь к туннелям и используете клиент MS-Windows, то я предлагаю взглянуть на Putty Tunnel Manager, который использует Putty для простой настройки и запуска туннелей без необходимости иметь открытую консоль putty.
источник