# 利用 Cloudflare Tunnel 搭建一个浏览器端的ssh页面

6 min read
Table of Contents

引言:什么是 Cloudflare Tunnel?

Cloudflare Tunnel (以前叫 Argo Tunnel) 是 Cloudflare 提供的一项免费服务。它的工作原理是在你的服务器内部运行一个轻量级的守护进程(cloudflared),这个进程会主动向 Cloudflare 的全球边缘网络发起一个加密隧道连接。

当外部用户访问你设定的域名时,请求会先到达 Cloudflare 最近的节点,然后通过这个加密隧道直接转发到你服务器的内部端口。

使用 Tunnel 做 SSH 的好处在于:

  1. 加速连接:流量走的是 Cloudflare 优化的全球骨干网,避开了拥堵的公网线路。
  2. 浏览器即客户端:你可以在任何设备(iPad、手机、网吧电脑)上,只要有浏览器就能管理服务器,无需安装专门的 SSH App。
  3. 安全性爆表:你的服务器甚至不需要拥有公网 IP,也不用开放 22 端口给公网。并且,Cloudflare 会在 SSH 前面加一把“锁”(比如邮箱验证),只有你认证通过了才能看到 SSH 登录界面。

准备工作

  • 一台 Linux 服务器(本文以一台新加坡服务器为例)。
  • 一个托管在 Cloudflare 上的域名 。
  • Cloudflare 账号(免费版即可)。

搭建步骤

整个过程在 Cloudflare 的网页后台即可完成,无需复杂的配置文件。

第一步:创建隧道并安装连接器

  1. 登录 Cloudflare Dashboard,在左侧菜单栏找到并点击 Zero Trust
pic-1.png
  1. 在 Zero Trust 面板中,导航至 网络 -> 连接器,点击 创建隧道
image.png
  1. 连接器类型选择默认的 Cloudflared,点击 Next。给隧道随便起个名字(例如 web-ssh-sg),保存。

  2. 在接下来的页面中,选择你服务器的操作系统架构(通常是 Linux/Debian/64-bit)。

  3. 页面下方会生成一串安装命令。复制这行命令,登录到你的服务器终端粘贴并运行。

image.png

当命令执行完毕,网页上的隧道状态变绿色时,说明隧道已打通。

第二步:配置内网穿透(Public Hostname)

这一步的目的是告诉 Cloudflare:当有人访问特定域名时,把请求转发给服务器的哪个端口。

紧接上步,配置路由隧道

image.png
  • 子域名: 可选项,比如 ssh
  • : 选择你已托管到 Cloudflare 的域名。
  • 路径: 留空。
  • 服务:
    • 类型 选择 SSH
    • URL 填入 localhost:22。(如果你修改过 SSH 端口,请填写对应的端口号)。
image.png

保存后,Cloudflare 就知道该把 ssh.yourdomain.com 的流量往哪里送了。

第三步:配置浏览器渲染(最关键的一步)

到目前为止,隧道虽然通了,但如果你直接访问那个域名,浏览器是不知道如何解析 SSH 协议的。我们需要借助 Cloudflare Access 的能力把它渲染成网页。

  1. 在 Zero Trust 左侧菜单,点击 访问控制 -> 应用程序,点击 添加应用程序
image.png
  1. 选择 自托管

  2. 配置应用基本信息

  • 应用程序名称: 随便填,如 My Web Terminal

  • 会话持续时间: 选择登录状态保持多久,如 24h

  • 添加公共主机名: 必须填写你在第二步设置的完整域名,将子域,域都正确填入(例如 ssh.yourdomain.com)。

  1. 设置浏览器渲染(重中之重)
  • 点击下方的 浏览器呈现设置 标签页。
  • 向下滚动找到 浏览器呈现 选项。
  • 在下拉菜单中,务必选择 SSH
image.png
  1. 配置身份验证策略

为了安全,你需要设置谁能访问。例如,设置规则为 “Email” “Is” “你的邮箱地址”,这样只有你能接收验证码登录。

image.png image.png

如果不做这最后一步,访问域名时浏览器会尝试下载文件,而不是显示终端界面。

点击保存,大功告成!

最终体验

现在,打开你喜欢的浏览器,访问你设置好的域名(如 https://ssh.yourdomain.com)。

  1. 首先是 Cloudflare 的安全验证页面。输入你的邮箱,获取并填入验证码。
  2. 验证通过后再输入用户名和私钥密码即可登录到终端。

这样我们就搭建好了一个可以网页访问的 ssh 终端。

My avatar

Thanks for reading my blog post! Feel free to check out my other posts or contact me via the social links in the footer.


More Posts

# NixOS 下 Nvidia 显卡驱动配置

3 min read

NixOS 是一个高度模块化、配置即代码的 Linux 发行版,但初次上手时,尤其是涉及 Nvidia 显卡驱动配置,常常让人摸不着头脑。本文记录了我在闲置笔记本上 Nvidia 独显的相关配置。

Read

Comments