2016-11-14 45 views
1

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

我得到它的工作通过遵循信息Creating a forwarded port within an SSH tunnel

具体该行得到了我的本地端口成功地建立这样,它可以被绑定:

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

这是好的,但据我所知它SSH客户端绑定到3306以从服务器接收数据。如果用户已经安装了MySQL,这是一个问题,因为它将使用此端口,所以我的服务不能。当然,服务可以停止,但这不是一个非常友好的过程。 我期待能够通过一个高 - 短暂 - 端口来监听我的连接的持续时间。

我有点糊涂了哪个参数我应该通过,其原本以为第二端口是本地端口我需要绑定。经过广泛的端口配置实验后,我对如何处理这个问题感到不知所措。

此外,我尝试了各种重载但没有3个重载方法似乎产生我想要的东西。

任何提示?

感谢,

安迪

回答

1

好吧,我现在已经解决了这个。

的解决方案是因此它使用一个临时端口修改的MySQL连接器的字符串。随机挑选一个。

server = localhost; UID =; PWD =;数据库=;端口= 14324

然后修改绑定到该端口的ForwardedLocalPort。

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

因此,我们将连接转到本地主机14324到远程服务器上的本地主机3306。

下一个挑战如何确保我使用的端口尚未绑定!

因此,要做到这一点使用,不需要端口号超载即

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

这将分配可用的临时端口到你的过程,可以使用发现:

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

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

相关问题