понедельник, 15 июля 2013 г.

ssh тунель

Допустим у нас стоит задача посмотреть что творится в базе MySQL на продакшине, а там на удаленной машине порт 3306 закрыт наружу, только локальный сервер приложения имеет туда доступ. Для этого мы можем создать тунель:
$ 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

Комментариев нет:

Отправить комментарий