【问题标题】:How to forward ports over an SSH tunnel using Granados with C#如何使用带有 C# 的 Granados 通过 SSH 隧道转发端口
【发布时间】:2011-09-17 16:10:02
【问题描述】:
我正在使用 Granados SSH 库,并尝试将本地主机上的端口 3306 转发到远程主机上的端口 3306(即 MySQL 服务器端口)。也就是说,我希望能够通过 SSH 隧道连接到远程主机的 MySQL 服务器。
这是我目前尝试使用 Granada .NET SSH 库但似乎不起作用的示例:
public SSHConnection _conn;
_conn.ListenForwardedPort("localhost", 3306); //doesn't work
有人可以告诉我如何实现我想要的吗?
【问题讨论】:
标签:
c#
.net
networking
ssh
portforwarding
【解决方案1】:
你的术语倒退了!您正在尝试做的是隧道从本地机器到远程系统。这是因为远程系统是 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 以外的地址。