使用PHP通过SSH隧道

时间:2017-04-29 05:42:46

标签: php sql-server ssh

防火墙MS SQL服务器希望在互联网上向Ubuntu服务器提供数据。

所以我建立了从MS SQL服务器到Ubuntu服务器的SSH隧道,要求Ubuntu将其port 1433流量发送到MS SQL的port 1433

根据this Stack Overflow的回答,我想我应该在MS SQL服务器上这样做:

ssh -R 1433:localhost:1433 ubuntu.example.com

它是一台Windows机器,所以我在PuTTY中做到了这一点:enter image description here

在本地网络中,我已经测试过使用PHP连接到SQL服务器并且它可以工作。

$server = '192.168.0.12';
$user = 'buttle';
$pass = '1234';
mssql_connect($server,$user,$pass);

现在我想尝试使用SSH隧道而不是"直接"来连接相同的两台机器。连接。所以我将$ server更改为:

$server = 'localhost,1433';

然后我通过PuTTy连接从SQL Server机器到Ubuntu机器的SSH隧道。也许这就是我出错的地方,因为我不知道自己在做什么。

PuTTY Tunnels configuration

我在Ubuntu机器上收到此PHP错误:

Warning: mssql_connect(): Unable to connect to server: localhost,1433 

编辑:

还试过这个:

enter image description here

而且:

[![在MS SQL服务器中指定IP地址的远程IPv4] [5]] [5]

最后,我已经解决了。看到我的回答。

1 个答案:

答案 0 :(得分:1)

所有使用PHP mssql函数的在线教程都假设您在Windows环境中运行PHP。显然,在Windows中,IP和端口号用逗号分隔,但在Linux中用冒号分隔。

// Linux running PHP
$server = 'localhost:1433';
// Windows running PHP
$server = 'localhost,1433';

像往常一样,几个小时的问题归结为一个字节。