20.06 2010

Если перед вами встала задача соединиться с удаленной базой данной, которая, по очевидным причинам, не доступна извне, то я могу предложить вам по крайней мере 3 варианта решения этой проблемы.

  • Открыть к ней доступ извне, тем самым снизив уровень безопасности.
  • Соединиться через ssh и выполнять команды вида:

    echo "SELECT * FROM table" | mysql

  • Сделать проброс соединения через SSH

Так как первых два варианта глупые чуть более, чем полностью, остановимся на третьем. Для этого нам понадобится выполнить всего одну команду в консоле:

ssh -L 3307:localhost:3306 [email protected]

Где 3307 - локальный порт, к которому нужно присоединяться из PHP, localhost - локальный хост, 3306 - удаленный порт, [email protected] - пользователь@удаленный хост

Подводные камни

  1. Команду нужно выполнять после каждого перезапуска сервера и контролировать работоспособность
  2. Время отклика возрастет, так как добавятся накладные расходы на шифрование/расшифровывание
  3. На локальном компьютере появится уязвимость удаленного сервера, так как есть прямой проброс соединения. Так что следует для порта 3307 заблокировать доступ извне через iptable или брандмауэр
comments powered by Disqus