使用 Cloudflare Zero Trust 连接被墙的服务器

我有些服务器被墙了,除了通过跳板机连接,还有什么好的办法吗?当然有了,使用 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,表达式写比如说 ssh@dmesg.app

2023042202404060

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

2023042202404112

使用 WARP 连接,输入邮箱进行验证

WARP 连接成功之后,就会发现能 SSH 啦,再也不怕 GFW 了

2023042202404290

通过 cloudflared access 连接

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

2023042202404214

客户端需要安装 cloudflared,先登录 cloudflared login

然后修改 SSH 配置文件 ~/.ssh/config

  1. Host ssh.dmesg.app
  2. # 记得修改cloudflared路径
  3. ProxyCommand /opt/homebrew/bin/cloudflared access ssh hostname %h

然后再ssh username@ssh.dmesg.app 就可以啦

当然如果不想改 config 那么也可以

  1. cloudflared access ssh hostname ssh.dmesg.app url 127.0.0.1:10022

然后另外一个窗口

  1. 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

2023042202404319

2023042202404461

浏览器打开链接就可以了,注意这里的用户名是服务器的用户名,比如root,并不是进行邮箱验证的 xxx@dmesg.app

2023042202404579

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

2023042202404680

Related Post

发表回复