У меня возникли трудности с пониманием проблемы туннелирования SSH. Проблема заключается в следующем:SSH промежуточному хосту
Локальный компьютер -> Промежуточный сервер -> Сервер MySQL
сервер MySQL можно получить доступ только из промежуточного сервера. У меня есть учетная запись SSH для промежуточного сервера.
Как подключиться к серверу MySQL с локальной машины, в частности, из PHP? Я хочу иметь возможность нормально обращаться с сервером MySQL, чтобы я мог использовать PDO с ним.
Я пробовал:
SSH Открытие (shell_exec ('SSH -L 3307: промежуточный сервер: 3306 имя пользователя @ промежуточного сервера')) Честно говоря, не совсем уверен, если это правильно.
Подключение с использованием mysqli на порт 3307 (чтобы узнать, можно ли установить соединение).
Это не работает, я пробовал буквально все, что я могу придумать.
Не работает, как? Какие ошибки. Вы видите что-нибудь в журналах сервера? Вы видите что-нибудь, если вы tcpdump на промежуточной коробке? Это должно работать нормально. Хотя имейте в виду, что mysql делает некоторые странные вещи, если вы укажете «localhost» в конфигурации клиента вместо IP-адреса. Если используется localhost, он переключается на использование unix-сокета вместо IP. – Zoredache
$ output = shell_exec ('ssh -L 3307: промежуточный сервер: 3306 имя_пользователя @ промежуточный-сервер'); $ db = mysqli_connect ('mysql-host', $ env ['dbuser'], $ env ['dbpassword'], $ env ['dbname'], 3307); 'Он просто отказывается подключиться и, в конечном итоге, отключается , –
Что, черт возьми, ты делаешь? Почему вы должны инициировать соединение SSH с shell_exec? Ваш ** shell_exec даже не вернется, пока соединение ssh не будет закрыто **. В этом случае вы не сможете использовать туннель, потому что он закрыт. – Zoredache