我有些服务器被墙了,除了通过跳板机连接,还有什么好的办法吗?当然有了,使用 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 登录即可。