2

我正在使用 Granados SSH 库,并且尝试将本地主机上的端口 3306 转发到远程主机上的端口 3306(即 MySQL 服务器端口)。也就是说,我希望能够通过 SSH 隧道连接到远程主机的 MySQL 服务器。

这是我目前尝试使用 Granada .NET SSH 库但似乎不起作用的示例:

public SSHConnection _conn;
_conn.ListenForwardedPort("localhost", 3306); //doesn't work

有人可以告诉我如何实现我想要的吗?

4

1 回答 1

2

你的术语倒退了!您正在尝试做的是本地机器远程系统的隧道。这是因为远程系统是 TCP服务器,因此在本地系统上启动连接并在远程系统上接受。该ListenForwardedPort方法用于另一个方向。

我没有对此进行测试,但从我对 Granados 源代码的阅读中,我认为您需要该ForwardPort方法。它需要四个与主机相关的参数,如下所示:

  • remote_host: 上面有服务器的主机,即你的 MySQL 服务器
  • remote_port: 服务器监听的端口,即 3306
  • originator_host:你想在本地收听的主机,可能是“localhost”
  • originator_port:本地要连接的主机的端口,可以重复使用 3306 或选择任何其他可用的号码

您的 MySQL 服务器remote_host可能是“localhost”(如 SSH 连接的另一个端点所见),但它也可能是远程系统可访问的任何机器。您也可以使用远程系统的 IP 地址,即 localhost 或 127.0.0.1 以外的地址。

于 2011-06-18T07:49:11.873 回答