白嫖系列-基于GitHub Action和国内公网服务器构建免费科学工具
重要说明:这篇文章仅用于技术探讨,请遵守相关法律法规
环境准备
Github Action
Github Action是一种持续集成和部署(CI/CD)平台,可用于自动生成、测试和部署。详细介绍请参考官网
由于Github本身是在外网,在本文中便是借助这个临时环境部署了WS+VMESS环境来进行科学上网。(关于VMESS是什么请谷哥或度娘)。
Github Action可以在公开的仓库中免费使用,下面主要介绍与本文相关的主要功能和概念。
Github Action基本介绍
Action的功能在这里可以直接看到
Action主要通过写yaml文件进行定义,yaml文件需要定义在.github/workflows
路径下
下面给出一个简单的action文件的组成部分
1 | name: action name # 这里是描述这个action的名字 |
下图对上面部分位置做了简单对应
Github action secrets介绍
因为仓库是公开的,secrets主要是为了存储一些不想被别人看到的信息。secrets的创建位置如下图所示,secrets创建后不能修改,只能更新。
secrets创建后,可以在yaml文件中以${{ secrets.SERVER_IP }}
的方式引用,注意两侧有两个空格。
至此,最简单的action配置介绍完了。
公网服务器
公网服务器的申请可以从阿里云、腾讯云等大厂申请国内的公网服务器,这里主要是要有一个公网ip,方便action中的虚拟环境可以直接访问,如果家庭有公网ip也可以不用申请云服务器。
科学工具
本文的环境使用clash客户端。
ClashX For Mac:https://github.com/yichengchen/clashX/releases
Clash For Windows(当前也支持Mac):https://github.com/Fndroid/clash_for_windows_pkg/releases
原理介绍
整个工作过程的原理如下图所示,原理很简单:
- Github Action将其中的Vmess服务转发至国内的公网服务器上
- 客户端直接连接公网服务器上的端口
部署及使用
服务端
action的配置文件可以直接从这里下载:https://halfcoke.github.io/config/action/ssh-forward.yaml
v2ray配置说明
下面摘出了v2ray的config.json的配置文件,做一些简单说明
1 | { |
Caddy配置说明
下面对Caddy配置文件进行简单说明
1 | :${{ secrets.SERVER_REMOTE_PORT }} { # 这个端口需要与ssh转发的端口相同 |
ssh远程端口转发说明
因为ssh本身不支持在命令行中输入密码,可以采用类似这种方式,或者使用sshpass,本文使用了sshpass
1 | sudo passwd runner << EOD |
端口转发命令:
1 | sshpass -p ${{ secrets.SERVER_SSH_PASSWORD }} ssh -o "StrictHostKeyChecking no" -f -NT -p ${{ secrets.SERVER_SSH_PORT }} -R :${{ secrets.SERVER_REMOTE_PORT }}:localhost:${{ secrets.SERVER_REMOTE_PORT }} ${{ secrets.SERVER_SSH_USER }}@${{ secrets.SERVER_IP }} |
关于ssh端口转发的详细介绍请参考这篇文章:SSH端口转发详解https://halfcoke.github.io/2021/cac946/
Github Action Secrets配置
需要在Secrets中配置下面这几个变量:
1 | SERVER_SSH_USER # 公网服务器的ssh用户 |
客户端
客户端主要配置clash的配置文件,已经标出了需要修改的部分。
1 |
|
好了,快去测试一下吧!
参考资料
- github action. https://docs.github.com/en/actions
- v2ray服务. https://www.v2fly.org/
- caddy配置. https://caddyserver.com/docs/