4

我已经写了一个连接到本地mysql数据库的php文件。现在,我想通过 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 正在工作,我认为这是因为当我使用 require 时它不会死。

但是,当我尝试开始使用 ssh 的东西时,它会引发服务器错误:

$ssh = new Net_SSH1(myURL);

我通常通过 SSH 连接到我的服务器的方式是使用 .pem 文件。我可以得到一些指导:

  1. 为什么当前代码可能会抛出错误?
  2. 如果这是可能的。
  3. 您将如何使用 .pem 文件编写连接代码。
4

2 回答 2

4

我认为你在这方面不走运。您可以在 PHP 代码中使用 ssh 扩展,或者如果您可以访问服务器,您可以尝试在命令行上创建一个 ssh 隧道。

不过,您可能需要特殊权限才能执行此操作。您似乎也没有对此主机帐户的 ssh 访问权限。

@jpm回答的重复

设置@Ólafur Waage在 PHP 中通过 SSH 连接到 MySQL 服务器上发布的隧道

@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);
于 2013-08-06T00:00:40.197 回答
1

mysql 扩展目前不支持此功能。修改扩展本身可能并不难,但在那时,它最多只能是一个自定义的 PECL 扩展。不久前在 PHP Internals 邮件列表中讨论了这个想法:

http://comments.gmane.org/gmane.comp.php.devel/79520

于 2013-08-16T15:13:44.403 回答