2016-11-14 47 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連接字符串。