【问题标题】:Creating a forwarded port within an SSH tunnel在 SSH 隧道中创建转发端口
【发布时间】:2016-11-17 03:37:50
【问题描述】:

我正在尝试使用SSH.NET 创建从localhost:3306 到远程计算机上的端口3306 的隧道:

  PrivateKeyFile file = new PrivateKeyFile(@" .. path to private key .. ");
  using (var client = new SshClient(" .. remote server .. ", "ubuntu", file))
  {

      client.Connect();
      var port = new ForwardedPortLocal(3306, "localhost", 3306);
      client.AddForwardedPort(port);
      port.Start();

            // breakpoint set within the code here

      client.Disconnect();
  }

当断点被命中时,client.IsConnected 正在返回true,但telnet localhost 3306 没有连接。如果我使用 Putty 创建连接,并在那里设置相同的隧道,它会成功。我错过了什么?

【问题讨论】:

  • 您是否收到有关 telnet 应用程序的特定警告?它关闭了吗?可能不会显示二进制连接数据...
  • 挂起,连接失败。使用 Putty 时,我得到一串数据。
  • 试试this link:我认为断开客户端是问题所在。如果您在StartDisconnect 之间中断,您也可能会停止转发。
  • 在旧版本的库中似乎也存在许多错误,请确保您使用的是最新版本。
  • @owlstead 谢谢 - 我已经检查过了,我使用的是 2013.4.7.0,最新版本。

标签: c# ssh portforwarding ssh.net


【解决方案1】:

通过将ForwardedPortLocal的参数改为:

    var port = new ForwardedPortLocal("localhost", 3306, "localhost", 3306);

(以明确我绑定到哪个接口),并在 port.Start(); 之前添加以下代码:

    port.RequestReceived += delegate(object sender, PortForwardEventArgs e)
    {
        Console.WriteLine(e.OriginatorHost + ":" + e.OriginatorPort);
    };

我注意到正在输出以下内容:

    ::1:60309

其中的e.OriginatorHost 部分是::1,这是localhost 的IPv6 等价物;但是,目标服务器使用的是 IPv4。将参数更改为:

    var port = new ForwardedPortLocal("127.0.0.1", 3306, "localhost", 3306);

改为强制隧道在 IPv4 上运行,然后我的代码完全按照我的预期运行。

【讨论】:

  • 非常感谢您的解决方案。从几个小时开始,我就一直在努力解决这个问题>.
  • 如果您像我在开发机器上使用本地 MySQL 实例一样苦苦挣扎,请查看我的问题 :-) stackoverflow.com/questions/40592492/…
【解决方案2】:

在遇到同样的问题并对其进行分析后,考虑到我得出的结论是这是一个错误(尽管它可能被认为是有争议的,但显然这种行为让 SSH.NET API 的用户感到惊讶)。

所以我在Unexpected behavior (a.k.a. bug) on local tunnel · Issue #117 · sshnet/SSH.NET · GitHub 上报告了它。

在修复之前,c# - Creating a forwarded port within an SSH tunnel - Stack Overflow 中的解决方法有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 2015-04-02
    • 2021-05-11
    • 2016-11-10
    • 1970-01-01
    相关资源
    最近更新 更多