利用 SSH 隧道或 SS 来实现内网穿透
热爱工作的我,时不时需要在家办公。但是由于测试数据库,redis,es 都只能从公司内网访问,所以就需要一个从外网访问公司内网环境的方案。
准备工作
首先需要一个在公司内网且有公网 IP 的机器,可以在这台机器上配置 SS Server 或者有这台机器的 SSH 权限。
获取 SS 账号或者 SSH 权限后,在本机执行以下操作,开始监听本地的 socks5 端口。
启动 socks 端口监听
SS 方案
- 本机启动 SS 连接内网的 SS Server
- 找到 shadowsocks 客户端的本地接口配置,记下是 socks 还是 http 并且记录端口号。
比如我这个配置是 socks5 协议,地址 127.0.0.1
端口 1080
SSH 方案
- 本机终端执行命令
ssh -D 1080 <remote_user>@<remote_host> -p <port>
配置 proxychains
如果想要通过终端跑程序时候也走代理,那么需要安装 proxychains
1 | brew install proxychains-ng |
安装完成后编辑 /usr/local/etc/proxychains.conf
文件,修改最后一行为 socks5 127.0.0.1 1080
保存退出。
此时已经大功告成,以后执行命令只要开头 proxychains4
即可通过代理穿透到内网访问。比如
1 | $ proxychains4 python api/run.py |
其他 GUI 软件
当使用 Navicat 或 DataGrip 之类的 GUI 数据库客户端时候,只需要在 app 的代理设置填写一下 socks 协议监听地址和端口即可实现 app 全局流量通过代理穿透到内网执行。