📋 前置条件:本篇教程默认已经开通了 Cloudflare 的 Zero Trust 功能。


🔧 1. 创建隧道

🌐 进入 Zero Trust 界面

Zero Trust 界面

🎯 创建隧道分为以下四个步骤:

📝 步骤一:选择隧道类型

选择隧道类型

⚠️ 重要提醒:务必选择 Cloudflared,不要选择 WARP Connector!

🏷️ 步骤二:命名隧道

命名隧道

为隧道命名,名称可以随意填写,基本用不到。

⚙️ 步骤三:安装并运行连接器

安装连接器

💻 本地机器安装

首先在的本地机器安装 cloudflared 程序。 选择本地机器的环境①(此处默认为 Windows),然后②点击下载并安装,后续连接隧道时会用到。

🖥️ 服务器端安装

服务器安装

在的服务器上安装 cloudflared 程序。

📌 注意:此命令会用到 GPG 和 CURL,请确认服务器是否已安装这些工具。

sudo apt update
sudo apt install gpg curl

根据图片的顺序,选择服务器的系统,复制③号命令即可:

然后,复制④号命令运行,这样 cloudflared 的守护进程就会以服务的方式运行。

重要:务必不要选择手动运行的命令!

安装成功

✅ 看到 “successfully” 字样即表示安装成功,后续无需再操作服务器。

连接状态

此时①处会显示连接状态,然后点击②"下一步"。

🌍 步骤四:路由隧道

路由隧道

🔑 这一步非常关键

  • ①子域可以随意填写,建议起个容易记忆的名称,以后会用到
  • ②选择在 Cloudflare 托管的域名
  • ③选择 SSH 协议
  • ④填写服务器地址,除非修改过 SSH 的监听端口,否则使用默认端口
  • ⑤保存隧道

🔗 2. 本地机器连接

首先确认已经安装了 cloudflared,打开终端验证:

cloudflared -v

应该正常输出版本号。

💻 重要提醒:以下方法都针对 Windows 环境,其他操作系统请自行调整。

使用代理连接 SSH 有以下几种方法:

🔧 方法一:修改 SSH 配置文件(推荐终端用户)

如果只是简单使用终端连接,可以修改 SSH 配置文件以方便使用。

编辑 %USERPROFILE%\.ssh\config,注意 Host 填写在隧道中设置的域名:

Host your_ssh_domain
    User your_ssh_username
    ProxyCommand cloudflared access ssh --hostname %h
    IdentityFile "your_private_key_path"
    Port 22

修改完成后,使用:

ssh your_ssh_domain

即可轻松连接。可能会弹出网页认证,接受即可。


🔀 方法二:端口转发(适用于不支持代理的客户端)

如果使用的 SSH 客户端不支持转发,或者对 SSH 转发的支持有限,可以使用 cloudflared 在后台将远程服务器的端口转发到本地端口。

首先打开终端使用命令:

cloudflared access ssh --hostname your_ssh_domain --url localhost:12345

这样,远程服务器就通过 Cloudflare 代理转发到本地的 12345 端口。接下来只需要在使用的 SSH 客户端连接到:

localhost:12345

然后配置使用服务器的用户名和密钥即可正常登录。

⚠️ 缺点:需要一直开启终端保持 cloudflare 进程运行(当然也可以用 Windows 服务隐藏运行窗口)。虽然占用很小,但如果介意的话,可以尝试第三种方法。


⭐ 方法三:使用 MobaXterm(强力推荐)

🎉 这确实是我至今为止用过最强大的 SSH 客户端,当然还有许多其他功能,但不在本文探讨范围内。

📋 创建 SSH 会话

会话配置

首先打开①会话配置界面。

SSH 配置

如图所示:

  • 选择①SSH
  • ②设置 your_ssh_domain
  • ③新增用户

新增用户

选择①New

用户设置

分别填写:

  • ①②用户信息,name 可以随意填写(给自己看的)
  • ②必须填写要 SSH 登录的用户名
  • ③不用填写,因为使用私钥登录

确定后,回到 SSH 会话配置界面继续:

SSH 配置

  • ④选择用户
  • ⑤选择刚才添加的用户
  • ⑥设置端口,如果没有修改过,就是 22 端口
  • ⑦选择协议

🚨 重要提醒:⑦这一步非常关键!可以选择 None(如果不需要左侧的文件管理器),也可以选择 SCP 协议,但绝对不要选择 SFTP 协议

❌ SFTP 协议不支持SSH转发!!!

如果选择SFTP协议,连接 SSH 会话时 MobaXterm 会卡死 10~20 秒,虽然最后也能登陆到远程服务器,但左侧的文件管理器同样不会显示。

  • ⑧选择用户私钥
  • ⑨进入本地转发设置

🌐 网络设置

网络设置

  • ①确认已进入网络配置页
  • ②选择 Local
  • ③Host 选择 your_ssh_domain
  • ④选择要登录的用户
  • ⑤选择端口(经过测试,端口可以随意填写,cloudflared 会自行处理,但很玄学的可能会增加些许延迟,还是建议填写实际端口)
  • ⑥填写命令:
cloudflared access ssh --hostname %host

这里的 %host 变量就是上面填写的 Host。

🎨 自定义选项

自定义设置

  • ①选择 Bookmark settings
  • ②填写会话名称,可以随意填写
  • ③可以自定义标签页颜色
  • ④可以添加到桌面快捷方式

最后选择 OK 完成配置。

🚀 连接服务器

连接界面

左侧双击新建的会话,即可登录到远程服务器的 SSH。

中间可能会弹出浏览器认证,按提示接受即可。

如果关闭会话后第二次登录 SSH 服务器,会发现上次登录的地址变成了 127.0.0.1 或者 ::1


🎉 完成!

恭喜,配置成功!

现在可以尽情享受通过 Cloudflare 代理的安全 SSH 连接了。🔐✨