2011-03-17 110 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出于这样的目的取得了巨大成功,实际工作第一次

,让我吃惊的是。