起源
公司希望能有一个功能能够实现建立从公网上的平台到线下产品的ssh连接。而我们的产品一般是在学校或者公司的内网中是无法直接建立ssh连接的。经过实验与讨论决定通过反向连接的方式来建立ssh连接。
方案
如果你有一个公网上的服务器,并且你需要连接一台无法直接连接的局域网内的机器。那么下面这个思路会比较适合你。
- 公网服务器作为连接请求分发中心
- 局域网机器轮询服务器获取连接请求操作
- 局域网机器发现有连接请求后和服务器建立socket长连接
- 局域网机器在本地打开终端(通过编程语言),然后获取终端输入和输出流
- 将终端的输入、输出流和 socket的输入、输出流关联起来
- 公网服务器就能间接获取到局域网机器本地终端的输入输出流
以上解决方案涉及到socket 编程和IO操作
sshs
sshs是以上方案的Java语言实现。
sshs 主要实现的是客户端机器打开终端、获取终端输入输出流、与服务端建立socket和服务端获取socket输入输出流操作。不包含解决方案中的1,2步骤。因为这些操作需要调用sshs的使用者来完成
更详细内容情况项目地址
项目地址:sshs
网友评论