Удаленное подключение к mysql из PHP по shh туннелю

6 Июн
2012

Добрый день всем!

Недавно получил задачу — подключаться к удаленной базе данный MySQL (установленной на ОС Windows 7) и забирать оттуда данные. Реализация должна быть на языке PHP. Для использования ssh туннеля на машине с MySQL был установлен софт — FreeSSHd.
Важное замечание — машина находится за прокси сервером, однако на нем уже созданы правила перенаправления портов. То есть если я соединяюсь с сервером по заданному порту — он переадресует меня на нужную мне машину.
Хостинг не выделенный и не виртуальный, поэтому клиентов туда не поставить.

Настройка ssh соединения


Для настройки ssh соединения я использовал функцию — ssh2_connect():

$connection = ssh2_connect('my IP',port) or die(mysql_error());

— соединение установлено успешно;

Затем я авторизуюсь с помощью логина и пароля:

ssh2_auth_password($connection, 'username', 'pass');

— тоже все хорошо;
Затем я строю туннель:

$tunnel = ssh2_tunnel($connection, 'ip address', port) or die(mysql_error());


— опять-таки все отлично, но я не совсем уверен в значении «ip address».(То есть, я указываю тут тот же адрес, что и в функции ssh2_connect ?);

И вот с этого места начинаются проблемы.
До сих пор мне не понятно — как, при успешном создании туннеля я должен подключиться к mysql?
По моей логике я должен использовать функцию — mysqli_connect():

$dbs = mysqli_connect('ip addr', 'mysqluser', 'pass','dbname', port) or die (mysql_error());

— в поле ip addr я, по идее, должен указать localhost т.к. ssh туннель, как vpn. Однако ничего не выходит.

Первое с чем я столкнулся — переменная $tunnel отдает не строку, нужную для сокета в функции mysqli, а ресурс.
Прочитав это из ошибки. я подумал, возможно, если туннель создан, то я могу подключаться к удаленной базе так, как-будто она на локальной машине. Правда и тут меня постигла неудача.

Итоги


Вот какие вопросы у меня остались после моих попыток:
— Как соединится с базой данных при успешном подключении к удаленной машине по ssh и успешной установке туннеля?
— Возможно ли по-другому (используя ssl или что-то другое) настроить шифрованное соединение между компьютерами?
По материалам Хабрахабр.



загрузка...

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

Наверх