到 MS SQL Server 的 SSH 隧道可以使用 PuTTY,但不能通过 ssh 命令行使用

到 MS SQL Server 的 SSH 隧道可以使用 PuTTY,但不能通过 ssh 命令行使用

我正在尝试从我的 Windows 10 本地计算机创建到 MS SQL Server 的 SSH 隧道。当我使用 PuTTY 创建隧道时,它运行完美。但是当我在命令行 (OpenSSH_for_Windows_9.1p1,LibreSSL 3.6.1) 中创建相同的隧道时,如下所示

ssh -i ecdsa_id -L 1433:192.168.1.22:1433 user@remote

隧道已创建,但无法连接到数据库(错误“[Microsoft][ODBC Driver 17 for SQL Server]TCP 提供程序:无法建立连接,因为目标计算机主动拒绝了它。”)。在服务器上,在 sshd 日志中完全没有通信。如果我为 MySQL(或服务器上运行的任何其他服务)创建相同的命令行隧道,它会按预期工作,连接尝试会出现在 sshd 日志中。

我尝试了很多不同的设置、不同的端口以及我能找到的任何建议,但都没有任何帮助。

有谁知道 PuTTY 有何不同,为什么它的隧道可以工作而命令行 ssh 却不能,或者我应该尝试什么才能让它工作?谢谢。

答案1

天哪,我花了三天时间尝试了几乎所有可能的设置,才发现问题出在哪里。我的 PDO 连接字符串如下所示

sqlsrv:Server=localhost,1433;Database=test

并且它与 PuTTY 创建的隧道一起工作,但与 ssh 命令行一起工作则不行。现在我突然想到,我可以尝试

sqlsrv:Server=127.0.0.1,1433;Database=test

一切按预期进行。

奇怪的是,MySql 的 PDO 驱动程序与“localhost”一起工作

mysql:host=localhost;port=3336;dbname=test

无论我使用什么方法创建隧道。

我尝试 ping localhost,结果解析为“::1”(IPv6),我猜这就是它无法正常工作的原因。PuTTY 可能已经解决了这个问题。

相关内容