Допустим у нас стоит задача посмотреть что творится в базе MySQL на продакшине, а там на удаленной машине порт 3306 закрыт наружу, только локальный сервер приложения имеет туда доступ. Для этого мы можем создать тунель:
На стороне сервера /etc/ssh/sshd_config
$ ssh -f -N user@database.example.com -L 9906:127.0.0.1:3306Чтобы сократить, можно воспользоваться алиасом, ~/.ssh/config:
Host tunnel HostName database.example.comm IdentityFile ~/.ssh/id_rsa_2 LocalForward 9906 127.0.0.1:3306 User user
$ ssh -f -N tunnelТаким образом мы можем подключиться клиентом базы данных на локалке как-будто к localhost:9906, что на самом деле будет тунелем на удаленный database.example.comm, у которого закрыт наружу порт 3306, но у себя локально(127.0.0.1:3306) он же не закрыт, вот мы и пробрасываем с локального пората, по ssh порту на удаленный, а там ssh-сервер перекидывает пакеты на свой указанный локальных порт.
На стороне сервера /etc/ssh/sshd_config
AllowTcpForwarding yes PermitTunnel yes
/etc/init.d/sshd restart
Комментариев нет:
Отправить комментарий