php通过ssh链接数据库的简单方法 不需要phpseclib扩展(windows系统)

现在有一个这样的需求:

A. 是本地开发机器,windows桌面系统;

B. 数据库服务器,不能直接链接访问;

C. 服务器,可以访问数据库;

如何在A机器上链接B数据库服务器呢?有两种方案:

1.使用php扩展phpseclib

phpseclib支持:SSH2, SFTP, RSA, DSA, Elliptic Curves, AES, ChaCha20, X.509, CSR, CRL, SPKAC 等

要求PHP版本:PHP 5.6+以上;

phpseclib 接受字符串 – 而不是文件路径。如果你想做一个文件,你可以做 file_get_contents。

phpseclib 不需要公钥。私钥中嵌入了公钥,因此 phpseclib 只是将其提取出来。

phpseclib 可以采用几乎任何标准化格式,从 PKCS#1 格式的密钥到 PuTTY 密钥,再到 XML 签名密钥。

使用方法demo:

$ssh = new SSH2('www.99xq.cn');
$ssh->login('username', PublicKeyLoader::load(file_get_contents('/home/ubuntu/privkey')/*, 'password'*/);
echo $ssh->exec('ls -la');

以上关于phpseclib扩展的实现方法,是比较复杂的,安装扩展的成本比较高,并且代码层还需要改动,所以放弃方法1.

2.使用windows的ssh命令

在windows的命令行输入如下指令:

ssh -fN -L3307:192.168.10.6:3306 -p服务器C端口 ssh账户@服务器C的ip

-L后面的3307,是把数据库链接映射到本地的3307端口;

192.168.10.6:3306是数据库服务器B的ip、端口;

-p后面是服务器C的端口;

ssh账户名;

@后面跟服务器C的ip地址;

输入后回车,先输入yes确认链接,然后提示输入密码,复制密码在cmd命令行点一下右键就可以了。

然后链接数据库字符串就使用 127.0.0.1:3307 即可链接到数据库了。

无须改动php代码即可实现:php通过ssh链接数据库的简单方法,文章原创自久久博客www.99xq.cn,转载请注明出处:https://www.99xq.cn/mysql/422.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注