我想打開一個Java程序中的SSH隧道,以便系統的其他部分也可以訪問連接(例如,如果我將數據庫的端口轉發到本地主機,我應該可以打開數據庫在另一個程序中)......換句話說,我需要爲它創建一個類似unix命令ssh的Java包裝器。不過,我需要該程序是跨平臺的,所以如果可能的話我想使用Java庫。可能使用Java打開SSH隧道?
這是可能的(我一直在尋找不同的庫,但一直沒能建立隧道,以便在系統的其餘部分仍然可以使用它)
我想打開一個Java程序中的SSH隧道,以便系統的其他部分也可以訪問連接(例如,如果我將數據庫的端口轉發到本地主機,我應該可以打開數據庫在另一個程序中)......換句話說,我需要爲它創建一個類似unix命令ssh的Java包裝器。不過,我需要該程序是跨平臺的,所以如果可能的話我想使用Java庫。可能使用Java打開SSH隧道?
這是可能的(我一直在尋找不同的庫,但一直沒能建立隧道,以便在系統的其餘部分仍然可以使用它)
的JSch庫絕對讓這個簡單,並支持端口轉發:
JSch jsch = new JSch();
Session session = jsch.getSession(user, host);
session.setPassword(password);
session.connect(timeout);
session.setPortForwardingL(listenPort, destHost, destPort);
注意:它只是端口轉發,但不是plink-D做的動態轉發。另外,你會得到I/O異常:(java.net.SocketException)在連接到目標主機時被捕獲:來自SOCKS服務器的響應有不好的版本。 – cleverpig 2012-12-05 03:24:28
也許Jsch?
這應該是一個答案? – sfussenegger 2011-03-17 08:52:15
雖然這可能在理論上回答這個問題,[這將是更可取的](http://meta.stackexchange.com/q/8259)在這裏包括答案的基本部分,並提供供參考的鏈接。 – Kev 2011-08-27 23:49:12
我在基於Jcraft的Jsch的beanizer中獲得了一篇成功的文章。以下是詳細信息:http://www.beanizer.org/site/index.php/en/Articles/Java-ssh-tunneling-with-jsch.html
,讓我吃驚的是。
這不就是VPN的用途嗎? – Bobby 2011-03-17 08:47:41
@Bobby有時候使用這樣的解決方案很好。 – Sacx 2011-03-17 08:51:30
@Bobby SSH隧道是瑞士軍刀嚴重的防火牆環境。只要所有東西都是臨時的,它們比建立全面的VPN要容易得多。 – sfussenegger 2011-03-17 08:55:23