NastasiaD
Новичок
Mysql + SSH Tunnel! Помогите!
Есть несколько удаленных серверов с БД MySQL. Переодически надо собирать данные из этих баз. IPшники машин лежат в БД-табличке на localhost. Хочется по всем записям этой таблицы делать ssh tunnel на удаленные машины (соответствующие логины/пароли имеются), собирать данные и закрывать туннель. На локальной машине mysql сервиса нет и быть не должно. Воспользовавшись документацией рнр делаю ssh tunnel:
$connection = ssh2_connect('IP', 21);
ssh2_auth_pubkey_file($connection, 'LOGIN', '/PATH/TO/.ssh/id_rsa.pub', '/PATH/TO/.ssh/id_rsa');
$tunnel = ssh2_tunnel($connection, 'IP', 3306);
в результате получаем сокет-соединение. Далее подставляем этот сокет вместо localhost
ort в mysql_connect(). Коннект к базе не получается. Помогите в чем проблема? Неужели и правда сокеты работают только с localhostом?
Когда просто в шеле пишу ssh -C -L 3306:IP:3306 IP -l LOGIN -p 21
а потом в скрипте сразу mysql_connect("localhost:3306"....) то все хорошо.
Я понимаю, что можно с помощью второго варианта все настроить, но в задаче принципиально, что IPшники лежат в базе и надо брать их оттуда.
Есть несколько удаленных серверов с БД MySQL. Переодически надо собирать данные из этих баз. IPшники машин лежат в БД-табличке на localhost. Хочется по всем записям этой таблицы делать ssh tunnel на удаленные машины (соответствующие логины/пароли имеются), собирать данные и закрывать туннель. На локальной машине mysql сервиса нет и быть не должно. Воспользовавшись документацией рнр делаю ssh tunnel:
$connection = ssh2_connect('IP', 21);
ssh2_auth_pubkey_file($connection, 'LOGIN', '/PATH/TO/.ssh/id_rsa.pub', '/PATH/TO/.ssh/id_rsa');
$tunnel = ssh2_tunnel($connection, 'IP', 3306);
в результате получаем сокет-соединение. Далее подставляем этот сокет вместо localhost

Когда просто в шеле пишу ssh -C -L 3306:IP:3306 IP -l LOGIN -p 21
а потом в скрипте сразу mysql_connect("localhost:3306"....) то все хорошо.
Я понимаю, что можно с помощью второго варианта все настроить, но в задаче принципиально, что IPшники лежат в базе и надо брать их оттуда.