2011-03-17 67 views
5

我想打開一個Java程序中的SSH隧道,以便系統的其他部分也可以訪問連接(例如,如果我將數據庫的端口轉發到本地主機,我應該可以打開數據庫在另一個程序中)......換句話說,我需要爲它創建一個類似unix命令ssh的Java包裝器。不過,我需要該程序是跨平臺的,所以如果可能的話我想使用Java庫。可能使用Java打開SSH隧道?

這是可能的(我一直在尋找不同的庫,但一直沒能建立隧道,以便在系統的其餘部分仍然可以使用它)

+1

這不就是VPN的用途嗎? – Bobby 2011-03-17 08:47:41

+0

@Bobby有時候使用這樣的解決方案很好。 – Sacx 2011-03-17 08:51:30

+0

@Bobby SSH隧道是瑞士軍刀嚴重的防火牆環境。只要所有東西都是臨時的,它們比建立全面的VPN要容易得多。 – sfussenegger 2011-03-17 08:55:23

回答

5

JSch庫絕對讓這個簡單,並支持端口轉發:

JSch jsch = new JSch(); 
Session session = jsch.getSession(user, host); 
session.setPassword(password); 
session.connect(timeout); 
session.setPortForwardingL(listenPort, destHost, destPort); 
+0

注意:它只是端口轉發,但不是plink-D做的動態轉發。另外,你會得到I/O異常:(java.net.SocketException)在連接到目標主機時被捕獲:來自SOCKS服務器的響應有不好的版本。 – cleverpig 2012-12-05 03:24:28

0

也許Jsch

+2

這應該是一個答案? – sfussenegger 2011-03-17 08:52:15

+0

雖然這可能在理論上回答這個問題,[這將是更可取的](http://meta.stackexchange.com/q/8259)在這裏包括答案的基本部分,並提供供參考的鏈接。 – Kev 2011-08-27 23:49:12

0
我一直在使用木衛三SSH-2出於這樣的目的取得了巨大成功,實際工作第一次

,讓我吃驚的是。