我想打开一个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