我有些服务器被墙了,除了通过跳板机连接,还有什么好的办法吗?当然有了,使用 Cloudflare Zero Trust 即可。我们不仅可以使用 ssh 客户端,甚至还可以通过浏览器访问。除了 SSH 协议之外,RDP、SMB 甚至任何奇奇怪怪的协议都可以。
安装并连接 cloudflared
首先还是要想办法连接到被墙的机器,下载 cloudflared
https://github.com/cloudflare/cloudflared/releases
在网页上 Access – Tunnels 中创建一个 Tunnel,然后按照提示安装。
连接到服务器
Cloudflare 提供了三种通过 tunnel 连接到服务器的方式,第一种是通过客户端安装 WARP,第二种是通过客户端安装cloudflared,第三种是直接通过浏览器访问。
通过 WARP 连接服务器
这种办法其实和《使用 Cloudflare Zero Trust 创建大内网》一样,区别只是创建大内网时,我们内网的设备写的是局域网 IP,而这里则可能会写公网 IP。但是本质上没有区别哒!
在网页上 Tunnel 中,配置 Private Network,填入服务器的 IP。如果类似 GCP 那种分配的内网 IP,直接写内网 IP 对应的段也可以;否则直接写公网 IP 也可以。
老生常谈,创建 Profile,表达式写比如说 [email protected]

Split Tunnel 选择 include,然后添加服务器的 IP。

使用 WARP 连接,输入邮箱进行验证
WARP 连接成功之后,就会发现能 SSH 啦,再也不怕 GFW 了

通过 cloudflared access 连接
在网页上,配置 Public Hostname,下面 Service Type 选择 SSH,URL 写127.0.0.1:22,如果你想通过这个跳到其他服务器,那么就写IP:22

客户端需要安装 cloudflared,先登录 cloudflared login
然后修改 SSH 配置文件 ~/.ssh/config
- Host ssh.dmesg.app
- # 记得修改cloudflared路径
- ProxyCommand /opt/homebrew/bin/cloudflared access ssh —hostname %h
然后再ssh [email protected] 就可以啦
当然如果不想改 config 那么也可以
- cloudflared access ssh —hostname ssh.dmesg.app —url 127.0.0.1:10022
然后另外一个窗口
- ssh root@127.0.0.1 –p 10022
效果是一样的!
只要你的脑洞足够大,甚至可以通过cloudflared access 去连接任意 TCP 协议,甚至连 UNIX 套接字都可以哦
使用浏览器连接
同上,Public Hostname 创建一个 SSH 服务,比如说域名叫 browser.dmesg.app
然后 Application – Add Application – Self-hosted,application sub domain 同样写 browser.dmesg.app
然后创建 policies,和以前的方法一样,如果只是测试用甚至可以 Everyone
下一步 Additional Settings 中,选择 SSH


浏览器打开链接就可以了,注意这里的用户名是服务器的用户名,比如root,并不是进行邮箱验证的 [email protected]

下一步输入认证信息即可登录。根据服务器 sshd 配置不同,选择密码或者 key 登录即可。

