Добрый день всем!
Недавно получил задачу — подключаться к удаленной базе данный MySQL (установленной на ОС Windows 7) и забирать оттуда данные. Реализация должна быть на языке PHP. Для использования ssh туннеля на машине с MySQL был установлен софт — FreeSSHd.
Важное замечание — машина находится за прокси сервером, однако на нем уже созданы правила перенаправления портов. То есть если я соединяюсь с сервером по заданному порту — он переадресует меня на нужную мне машину.
Хостинг не выделенный и не виртуальный, поэтому клиентов туда не поставить.
Для настройки ssh соединения я использовал функцию — ssh2_connect():
— соединение установлено успешно;
Затем я авторизуюсь с помощью логина и пароля:
— тоже все хорошо;
Затем я строю туннель:
— опять-таки все отлично, но я не совсем уверен в значении «ip address».(То есть, я указываю тут тот же адрес, что и в функции ssh2_connect ?);
И вот с этого места начинаются проблемы.
До сих пор мне не понятно — как, при успешном создании туннеля я должен подключиться к mysql?
По моей логике я должен использовать функцию — mysqli_connect():
— в поле ip addr я, по идее, должен указать localhost т.к. ssh туннель, как vpn. Однако ничего не выходит.
Первое с чем я столкнулся — переменная $tunnel отдает не строку, нужную для сокета в функции mysqli, а ресурс.
Прочитав это из ошибки. я подумал, возможно, если туннель создан, то я могу подключаться к удаленной базе так, как-будто она на локальной машине. Правда и тут меня постигла неудача.
Вот какие вопросы у меня остались после моих попыток:
— Как соединится с базой данных при успешном подключении к удаленной машине по ssh и успешной установке туннеля?
— Возможно ли по-другому (используя ssl или что-то другое) настроить шифрованное соединение между компьютерами?
Недавно получил задачу — подключаться к удаленной базе данный 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 или что-то другое) настроить шифрованное соединение между компьютерами?