Я уже написал файл php, который локально подключается к базе данных mysql. Теперь я хочу подключиться к удаленной базе данных через SSH. В настоящее время функция подключения для моей базы данных в php:
$this->db = new mysqli(_SERVR_URL, _SERVR_USER , _SERVR_PASS, _SERVR_DB); if ($this->db->connect_errno) { echo "Failed to connect to MySQL: (" . $this->db->connect_errno . ") " . $this->db->connect_error; } else{ //echo "Successfully connected!! <BR><BR>"; }
Я хочу только изменить функцию подключения (выше), чтобы остальная часть кода все еще работала. Я успешно установил phpseclib и не заинтересован в установке расширений php ssh, потому что они не работали после почти 5 часов усилий. Phpseclib работает, и я думаю, это потому, что, когда я использую, он не умирает.
Однако, когда я пытаюсь начать работу с файлом ssh, он выдает ошибку сервера:
$ssh = new Net_SSH1(myURL);
Способ, которым я обычно пользуюсь SSH на моем сервере, – это файл .pem. Могу ли я получить некоторые рекомендации по:
Я думаю, тебе не повезло. Вы можете либо использовать расширение ssh в своем PHP-коде, либо если у вас есть доступ к серверу, вы можете попытаться создать туннель ssh в командной строке.
Однако вам, вероятно, нужны специальные разрешения. Также похоже, что у вас нет доступа к этой учетной записи хостинга.
дубликат ответил @jpm
Настройка туннелирования, опубликованная @ Ólafur Waage о подключении к серверу MySQL через SSH в PHP
И это для туннелирования @Sosy
shell_exec(“ssh -f -L 3307:127.0.0.1:3306 user@remote.rjmetrics.com sleep 60 >> logfile”); $db = mysqli_connect('127.0.0.1′, 'sqluser', 'sqlpassword', 'rjmadmin', 3307);
Расширение mysql в настоящее время не поддерживает это. Модификация самого расширения может быть не такой сложной, но в этот момент в лучшем случае это должно быть обычное расширение PECL. Идея обсуждалась в списке рассылки PHP Internals некоторое время назад: