【问题标题】:SSH Access using Renci.SSH to MySQL Server使用 Renci.SSH 对 MySQL 服务器进行 SSH 访问
【发布时间】:2017-03-28 07:28:37
【问题描述】:

尝试使用 Renci 主机 SSH 库访问 MySQL 服务器。

我按照Creating a forwarded port within an SSH tunnel 的信息让它工作了

具体来说,这条线成功地设置了我的本地端口,以便可以绑定:

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

这很好,但据我了解,SSH 客户端绑定到 3306 以从服务器接收数据。如果用户已经安装了 MySQL,这是一个问题,因为它将使用这个端口,所以我的服务不能。当然可以停止服务,但这不是一个非常友好的过程。 我希望能够在连接期间通过一个 High-Ephemeral-Port 来监听。

我对应该传递哪个参数有点困惑,最初认为第二个端口是我需要绑定到的本地端口。在对端口配置进行了广泛的实验之后,我不知道如何处理这个问题。

此外,我尝试了各种重载,但其他 3 个重载似乎都没有产生我想要的结果。

有什么建议吗?

谢谢,

安迪

【问题讨论】:

    标签: c# mysql ssh


    【解决方案1】:

    好的,我现在已经解决了。

    解决方案是修改 MySQL 连接器字符串,使其使用临时端口。随便挑一个。

    服务器=本地主机; uid=;密码=;数据库=;端口=14324

    然后修改 ForwardedLocalPort 绑定到这个端口。

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

    所以我们将连接到 localhost 14324 转发到远程服务器上的 localhost 3306。

    下一个挑战如何确保我使用的端口没有被绑定!!

    所以要做到这一点,请使用不需要端口号的重载,即

    ForwardedPortLocal("localhost", "localhost", 3306)
    

    这将为您的进程分配一个可用的临时端口,可以使用:

    port.Start();
    var portNumber = port.BoundPort;
    

    然后可以将其添加到您的 MySQL 连接字符串中。

    【讨论】:

      猜你喜欢
      • 2011-04-21
      • 1970-01-01
      • 2011-11-06
      • 2015-07-16
      • 2020-10-29
      • 1970-01-01
      • 2018-12-27
      • 1970-01-01
      • 2014-09-16
      相关资源
      最近更新 更多