使用SSH隧道运行Java应用程序的两个节点之间的通信

时间:2009-09-09 13:53:20

标签: java ssh tunnel

我正在A类网络中的一堆节点上运行应用程序,但是如果我登录到该网络中也有B类地址的唯一节点,则只能从我自己的系统访问它们。

但是,客户端部分(带有GUI和所有内容)只能在我的系统上运行,所以我需要一些与A类网络通信的方式。客户端(我的系统)尝试为服务器设置一个简单的TCP套接字(在内部网络的边缘,使用ServerSocket),但会获得连接超时异常。由于只有SSH端口22打开,有人建议我使用SSH隧道将数据包从我的系统发送到内部网络。

经过一段谷歌搜索后,我看到以下内容允许您设置SSH隧道,但我如何在Java中使用它来设置套接字,哪些不是?谢谢!

ssh -L 2222:10.10.10.10:22 174.174.174.174

修改 我已经使用JSch来设置从我的系统到内部节点的端口转发,但有没有什么方法可以使它成为双向的,而不必在每个内部节点上设置单独的隧道? (节点没有使用相同的TCP连接进行响应,但已建立与笔记本电脑端口2222的新连接。)

2 个答案:

答案 0 :(得分:2)

SSL隧道的工作方式与任何其他套接字一样,您只需连接到本地套接字即可。在你的情况下,它是,

Socket socket = new Socket("localhost", 2222);
OutputStream out = socket.getOutputStream();

隧道实际上会连接到10.10.10.10:22。

答案 1 :(得分:0)

如果您询问如何以编程方式设置转发端口,请使用JSch which supports port forwarding