Привет, хочу
напрямую через скрипт пробросить тунель до БД на сервере через локалхост, делаю так:
shell_exec("ssh -f -L 3307:127.0.0.1:3306 root@1.333.4.555 sleep 60 >> logfile");
$db = mysqli_connect('127.0.0.1', 'root', '555555555', 'DB',3307);
так делают, например прочитал
здесь:
но почему то не коннектится, puTTY предлагать не надо, хочу через скрипт напрямую сделать.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
А что команда выдает из консоли? Как организована авторизация, через сертификат?
paul85
Я без консоли напрямую, через скрипт соединяюсь:
Цитата |
shell_exec("ssh -f -L 3307:127.0.0.1:3306 root@1.333.4.555 sleep 60 >> logfile"); |
открывется окно на 60 секунд
Цитата |
$db = mysqli_connect('127.0.0.1', 'root', '555555555', 'DB',3307); |
цепляюсь к локалхосту к 3307 порту, который перенаправляет в открывшийся тунель
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
окно надо думать хочет пароль?
Цитата |
окно надо думать хочет пароль? |
куда его засовывать?
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Вот еще вариант:
http://www.experts-exchange.com/Programmin...Q_26619790.htmlно глючный т.к. в итоге тоже самое получается
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Вопрос снят. Кому надо:
$connect = ssh2_connect('111.227.433.28', 22);
if(ssh2_auth_password($connect, 'user_ssh', '**************'))
{
echo'<br>...<br>SSH: connect.';
$connect = new mysqli('111.227.433.28', 'user_mysql', '*****', 'DB');
if (!$connect->connect_errno)
{
if($connect->character_set_name()!=='utf8')$connect->set_charset('utf8');
echo'<br>...<br>MySQL: connect.';
}
else echo'<br>...<br>MySQL: disconnect.';
}
else echo'<br>...<br>SSH: disconnect.';
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Блин!...это ж не SSH получилось соединение
. Отбой расслаблятся.
хотя не уверен, что не SSH
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Чего-то даже через puTTY не получается.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
ABC, пароль только руками можно запихнуть, в открывшемся окне. Либо сделать авторизацию по ключам, тогда ввод пароля не требуется. В любом случае, ваш первый вариант - это инициализация туннеля. Он никуда не денется, после завершения скрипта. То есть неплохо бы следить за его состоянием. Поэтому проще поддерживать туннель вне PHP, скажем с помощью утилиты autossh. Ну это как пример...
А во втором варианте, боюсь, что ssh вообще непричем. То есть вы же перезаписываете ресурс ssh2 на экземпляр mysqli. Тут получается вся конструкция SSH как бы лишняя. Ну подключение к MySQL происходит только после верно введенного пароля, насколько я вижу. Но само соединение SSH и MySQL никакого отношения друг к другу с точки зрения передачи данных не имеют.
Цитата |
А во втором варианте, боюсь, что ssh вообще непричем. |
Цитата |
Блин!...это ж не SSH получилось соединение . |
В сети есть примеры нерабочие, как умудряются без сторонних утилит его проложить, чисто скриптом... чисто файлы же можно сделать,почему запрос MySQL нельзя не понятно. Понятно что пароль надо вводить.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Не могу понять, почему так? Почему должен использоватьсь всякие костыли чтоб удаленно и безопасно подключится к БД.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Ааа, нет, я ошибся. Оказывается уничтожается ssh туннель после 60-ти секунд. Вообще-то должно работать! Я вот сейчас проверил с Linux на Linux - нормально всё. Туннель строится. Соединение есть. Пароль спрашивает.
В чем именно загвоздка? Клиентская ОС какая, не винда случайно?
А чтобы без пароля работало - нужно авторизацию по ключам делать.
P.s. Я просто неочень понял суть проблемы, если честно... =)
Я обычно делаю еще проще. С помощью сервиса dyndns.org. На клиентской машине ставлю dyndns клиента (извините за тавтологию). Далее на сервере запускается раз в 5 минут скрипт, который резолвит имя и прописывает (обновляет) в фаерволе правило - "на этот IP адрес открыть всё". А остальному миру открыт лишь порт 80. Очень удобно, достаточно безопасно и никаких проблем. =)
Может быть ну их нафиг туннели? С ними мороки гораздо больше...
Цитата |
В чем именно загвоздка? Клиентская ОС какая, не винда случайно? |
Да винда.
_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.