现在有一个这样的需求:
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