我正在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的新连接。)
答案 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。