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

标签 java ssh tunnel

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

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

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

ssh -L 2222:10.10.10.10:22 174.174.174.174

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

最佳答案

SSL 隧道就像任何其他套接字一样工作,您只需要连接到本地套接字。在你的情况下,它是,

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

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

关于java - 使用 SSH 隧道在运行 Java 应用程序的两个节点之间进行通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1399823/

相关文章:

java - RecyclerView 中突出显示的大项目

java - string.split(\\s+) 无法处理前导空格

Java 邮件 : Exception when sending email

python - 使用公钥连接 Python MySQLdb 的 SSH 隧道

authentication - GitHub 多个帐户 : Can authenticate SSH with both accounts, 但无法克隆一个存储库

git - 将 "proxies"与 git 一起使用

c# - 连接到 OpenShift (Redhat Paas) mysql 实例

ffmpeg - RTSP 隧道 HTTP、FFMPEG

java - 如何使用应用程序配置注册 Ratpack 的 ConfigurableModule

macos - 在 OSX 上管理 ssh 隧道的好工具