共享防火墙环境下SSH访问本地GitHub runner构建服务器的方案咨询
兄弟我太懂你这种窘境了——共享办公的防火墙完全攥在房东手里,半点儿配置权限都没有,自己搭的GitHub runner构建服务器藏在局域网里,想SSH进去简直像摸黑找钥匙。结合你的场景,我给你几个不用碰共享防火墙就能搞定的实用方案:
反向SSH隧道(借助轻量云主机)
这是最靠谱也最可控的方案,你只需要租个最便宜的轻量云服务器(只要有固定公网IP就行,每月几块钱那种完全够用)。
第一步,在你的GitHub runner构建服务器上运行这条命令,建立反向隧道:ssh -R 2222:localhost:22 你的云主机用户名@云主机公网IP
这条命令的意思是,把构建服务器的22端口(SSH默认端口)映射到云主机的2222端口上。
之后你在自己的笔记本上,先SSH登录到云主机,再执行ssh localhost:2222,就能直接连到你的构建服务器了。
要是想让隧道一直稳定在线,不会因为网络波动断开,可以用autossh工具做自动重连,命令改成:autossh -M 20000 -R 2222:localhost:22 你的云主机用户名@云主机公网IP
这里的-M 20000是指定一个监听隧道状态的端口,随便选个没被占用的就行。内网穿透服务(快速临时方案)
要是你不想折腾云主机,用内网穿透工具能快速搞定。比如ngrok这类工具,安装好之后在构建服务器上直接跑:ngrok tcp 22
它会立刻给你一个公网访问地址,比如tcp://0.tcp.ngrok.io:12345,然后你在笔记本上用这条命令就能SSH进去:ssh 你的构建服务器用户名@0.tcp.ngrok.io -p 12345
不过免费版的ngrok每次重启都会换公网地址,要是想要半静态的固定地址,可能需要升级到付费版,或者找其他支持固定域名的内网穿透服务。主动反向连接(适合临时应急访问)
要是你只是偶尔需要连一次,还可以让构建服务器主动“找”你的笔记本。前提是你的笔记本能被外网访问——可以给笔记本绑定一个免费的动态DNS域名,然后在笔记本上开启SSH服务。
之后在构建服务器上运行这条命令,建立反向连接:ssh -R 2222:localhost:22 你的笔记本用户名@你的动态DNS域名
这样你在自己的笔记本上,直接执行ssh localhost:2222就能连到构建服务器了。不过这个方案只适合临时用,笔记本关机或者断网的话连接就没了。
最后再提醒几个注意点:
- 不管用哪种方案,先确认你的构建服务器上的SSH服务是正常运行的,并且你有合法的登录账号和权限。
- 用云主机的话,记得在云主机的安全组/防火墙里开放对应的端口(比如上面的2222端口),不然会被拦截。
- 内网穿透服务要注意安全性,尽量用官方正规的工具,避免泄露服务器的敏感信息。
备注:内容来源于stack exchange,提问作者user422005

