我正在用Java编写一个与SSH服务器通信并通过SSH隧道发送数据的应用程序。
想法是在启动时建立隧道,并在单个请求上使用该隧道,以便不在每个服务请求上创建新连接。
因此,在启动时,一个应用程序建立SSH连接,然后使用session.setPortForwardingL()创建隧道。 在每个请求中,其他应用程序只是简单地与本地端口通信,甚至没有打扰SSH隧道。将本地端口(隧道源)上写入的数据传输到隧道目的地是隧道的工作。
使用这种方法,需要始终保持SSH隧道的运行(只要可以连接)。
我正在努力找到一个失败证明解决方案来保持隧道活着。 - 即使服务器连接丢失,方法session.isConnected()也不会返回false。 - 在检查连接状态设置isConnected为false之前发送保持活动消息? - 任何人都实现了这样的逻辑吗?
我也对JSch以外的任何建议持开放态度,因为我还处于设计阶段。