项目地址 GitHub - codingmiao/hppt: 一款基于纯HTTP协议的内网穿透、反向代理工具
本项目需要jdk21启动,请先前往jdk官网下载对应你操作系统版本的jdk,然后在releases 页面下载最新版本编译好的jar包,或自行下载源码编译
假设你家里有一台台式机(ssh端口为22),并且有一台公网VPS服务器(ip 112.242.68.66),你想在公司用笔记本登录家里的台式机,可按如下结构部署:
1、拷贝cs文件夹到公网服务器上:
并调整cs.yml的配置信息:
# http服务端口 port: 30871 # 客户端配置列表 clients: - # 客户端ID # 客户端转发配置列表 remoteHost: "localhost" remotePort: 22
<jdk21_path>/bin/java -jar cs.jar
2、拷贝cc文件夹到在家里的台式机上:
修改cc.yml
# 客户端id,每个cc.jar用一个,不要重复 # 服务端http地址,可以填nginx转发过的地址 serverUrl: "http://112.242.68.66:30871" # 开始时闲置几毫秒发一次http请求,越短延迟越低但越耗性能 # 当收到空消息时,闲置毫秒数增加多少毫秒 addSleepTime: 100 # 闲置毫秒数最大到多少毫秒 maxSleepTime: 10000 # 向服务端发数据请求体的字节数最大值 有时会出现413 Request Entity Too Large问题,没办法改nginx的话就用这个值限制 maxSendBodySize: 2147483647其中即第一步在公网服务器上部署的cs.jar的访问地址,如果不希望直接暴露30871端口,也可以通过nginx转一下:
这样配nginx然后修改serverUrl配置为 即可
<jdk21_path>/bin/java -jar cc.jar随后,你就可以在公司用linux连接工具访问112.242.68.66的10022端口,来登录家里的台式机了
假设你有一个服务器集群,仅有一个nginx提供了80端口对外访问(112.242.68.66:80),你想要访问集群中的应用服务器(192.168.0.2)的22端口,则可以按如下结构部署
1、拷贝ss文件夹到网关服务器上:
并调整ss.yml的配置信息:
#服务http端口 port: 20871 #超过sessionTimeout,给客户端发送存活确认命令,若下一个sessionTimeout内未收到确认,则强制关闭服务 sessionTimeout: 60000 #接收到客户端/真实端口的数据时,数据被暂存在一个队列里,队列满后强制关闭会话 messageQueueSize: 20480 #上传/下载文件用的目录 fileDir: /data/ss/dt #是否启用压缩,默认启用 需和客户端保持一致 #是否启用内容加密,默认启用 需和客户端保持一致 # 允许的客户端id clientIds: - book执行如下命令启动ss.jar
<jdk21_path>/bin/java -jar ss.jar在nginx上配置一个代理指向ss.jar
2、拷贝sc文件夹到自己笔记本上:
并调整sc.yml的配置信息:
#客户端id,每个sc.jar用一个,不要重复 clientId: book #服务端http地址,可以填nginx转发过的地址 serverUrl: "http://112.242.68.66:80/xxx" #开始时闲置几毫秒发一次http请求,越短延迟越低但越耗性能 #当收到空消息时,闲置毫秒数增加多少毫秒 addSleepTime: 1000 #闲置毫秒数最大到多少毫秒 maxSleepTime: 60000 #向服务端发数据请求体的字节数最大值 nginx代理的话,如果没办法修改配置,会出现413 Request Entity Too Large问题,没办法改nginx的话就用这个值限制 maxSendBodySize: 1024000 #是否启用压缩,默认启用 需和服务端保持一致 #是否启用内容加密,默认启用 需和服务端保持一致 remoteHost: "192.168.0.2" remotePort: 22执行如下命令启动sc.jar
<jdk21_path>/bin/java -jar sc.jar随后,你就可以在公司用linux连接工具访问localhost的10022端口,来登录应用服务器了
组合示例一、二,实现更多有趣的玩法,比如把家里的端口代理到自己笔记本上,给其它同事的电脑访问:
由于http本身短连接、带了很多请求头等无用信息之类的原因,比直连损耗30%以上的效率。
以下是scp命令拷贝一份文件,直连和使用hppt反代的耗时对比:
条件不允许^_^,笔者写这个工具,就是因为使用环境里需要通过nginx转发,而nginx不允许配ws、sse相关的参数。
所以,用http post就是为了最大的适配能力,这个项目就是:要通用性有通用性、要性能有通用性^_^。
必须使用指定的clientId才能连接,数据传输过程中对字节进行了加密,如果你还需要更多的个性化验证,比如用户登录,可以发邮件到liuyu@wowtools.org进行定制化开发。
本文地址:http://syank.xrbh.cn/quote/6876.html 迅博思语资讯 http://syank.xrbh.cn/ , 查看更多