本文记录如何通过 Cloudflare Tunnel 连接 SSH,并支持两种使用方式:
  • 终端直接 ssh 连接
  • VS Code Remote SSH 远程开发

前置说明

通过 Cloudflare Tunnel 暴露的 SSH 服务,不能像普通服务器一样只靠 ssh 域名 直接连接。客户端本地需要安装 cloudflared,让 SSH 流量先通过 Cloudflare Access / Tunnel 代理,再进入服务器的 SSH 服务。
本文统一使用占位信息,真实信息请以管理员单独通知为准:
  • 服务器隧道域名:xxx.5280717.xyz
  • 服务器登录用户名:your_user
  • 服务器 SSH 端口:22
本文不会写入任何服务器密码。即使服务器允许密码登录,也只应在终端交互提示中输入,不要把密码写到 SSH 配置文件、脚本或群聊里。

1. 本地安装 cloudflared 客户端

根据本地电脑系统选择对应安装方式。

1.1 Linux Debian / Ubuntu

1.2 macOS

1.3 Windows

Windows 可以用 winget 安装,也可以下载 Cloudflare 官方 MSI 安装包。

1.3.1 方式 A:winget 安装

以管理员身份打开 PowerShell,执行:

1.3.2 方式 B:官方下载 MSI 安装包

如果 winget 安装失败,或者你习惯使用安装程序,可以使用 Cloudflare 官方 MSI:
  1. 系统选择 Windows
  1. 架构选择 64-bit
  1. 下载下面这个安装包:
下载完成后,双击运行安装程序即可。
如果你是在 Cloudflare Zero Trust 后台复制连接器安装命令,页面可能会提示:
请妥善保管您的令牌。此命令包含允许连接器运行的敏感令牌。任何能访问此令牌的人都可以运行隧道。
这个提醒非常重要。带 token 的命令只用于服务器端运行 Tunnel Connector,不要发到群里,也不要写进博客、截图或公开文档。普通客户端连接 SSH 只需要安装 cloudflared,不需要在本地 SSH 配置里填写这个 token。

1.4 验证安装

安装完成后,执行下面命令。如果能输出版本号,就说明安装成功。
Linux / macOS / Windows PowerShell 都可以执行:

2. SSH 连接方式一:临时单次连接

这种方式不需要修改 SSH 配置文件,适合临时测试。

2.1 Linux / macOS

首次连接时会自动唤起浏览器完成 Cloudflare 身份校验。验证通过后,就会进入 SSH 会话。

2.2 Windows

Windows 原生 OpenSSH 对 ProxyCommand 的可执行文件路径更敏感。建议在命令里写 cloudflared.exe 的完整绝对路径,否则可能出现下面错误:
先在 PowerShell 中查询 cloudflared 的真实路径:
常见安装路径类似下面这样,以你自己电脑的实际输出为准:
然后执行连接命令:

3. SSH 连接方式二:写入 SSH 配置文件

推荐使用这种方式。配置完成后,终端和 VS Code Remote SSH 都可以直接调用,不需要每次输入很长的命令。

3.1 找到 SSH 配置文件

不同系统的 SSH 配置文件路径如下:
  • Linux / macOS:~/.ssh/config
  • Windows:C:\Users\你的用户名\.ssh\config
如果文件不存在,可以手动新建。也可以直接用 VS Code 打开该文件编辑。

3.2 Linux / macOS 配置

把下面内容写入 ~/.ssh/config

3.3 Windows 配置

Windows 必须把 ProxyCommand 里的 cloudflared.exe 写成完整路径。请把路径替换为 where.exe cloudflared 查到的实际结果。
把下面内容写入 C:\Users\你的用户名\.ssh\config
参数说明:
  • Host:本地 SSH 里使用的连接名称,建议直接写隧道域名。
  • User:服务器登录用户名,请替换为管理员提供的用户名。
  • Port:服务器 SSH 端口,默认是 22
  • ProxyCommand:让 SSH 通过 cloudflared access ssh 代理连接。
  • ServerAliveInterval 15:每 15 秒发送一次心跳,降低空闲断开的概率。
  • ServerAliveCountMax 3:连续 3 次心跳无响应后断开连接。

3.4 终端连接

配置完成后,在终端直接执行:
如果是首次连接,同样会自动打开浏览器进行 Cloudflare 身份校验。

4. VS Code Remote SSH 连接

完成 SSH 配置文件后,VS Code 可以直接复用同一份配置。

4.1 安装插件

在 VS Code 插件市场安装:

4.2 连接服务器

  1. 点击 VS Code 左下角远程连接按钮。
  1. 选择 Connect to Host...
  1. 列表中选择 xxx.5280717.xyz
  1. 首次连接时按提示完成 Cloudflare 浏览器验证。
  1. 验证完成后,VS Code 会打开远程服务器窗口。
如果列表中没有出现 xxx.5280717.xyz,说明 VS Code 没有读取到正确的 SSH 配置文件。请确认配置写入的是当前系统用户的 .ssh/config

5. 常见问题排查

5.1 Windows 报 CreateProcessW failed error:2

原因通常是 SSH 客户端找不到 cloudflared.exe
处理方式:
  1. 执行 where.exe cloudflared
  1. 复制输出的完整路径。
  1. 把 SSH 配置文件里的 ProxyCommand 改成完整路径。
Windows 配置里不要只写:
建议写成:

5.2 提示找不到 cloudflared 命令

先关闭所有终端窗口,然后重新打开 PowerShell / Terminal。
如果仍然找不到,检查 cloudflared 安装目录是否已经加入系统 PATH 环境变量。
Windows 用户也可以先用下面命令确认:

5.3 连接超时或连接失败

按下面顺序检查:
  • 服务器端 Cloudflare Tunnel 是否正在运行。
  • Cloudflare Tunnel 的公共主机名服务类型是否为 SSH
  • Tunnel 目标地址是否指向 localhost:22
  • 隧道域名是否已经正确绑定到对应 Tunnel 路由。
  • 本地是否能正常打开 Cloudflare 身份验证页面。

5.4 VS Code 一直连接不上

先不要排查 VS Code,先在系统终端执行:
如果终端都连不上,说明问题在 cloudflared、SSH 配置或 Cloudflare Tunnel 上。
如果终端能连接,但 VS Code 不能连接,再检查 VS Code Remote SSH 读取的配置文件是否正确。

6. 安全提醒

  • 不要把服务器密码写进教程、群聊、脚本或配置文件。
  • 不要把自己的 SSH 私钥发给别人。
  • 如果管理员提供的是个人账号,请不要多人共用同一个账号。
  • 如果连接失败,截图时注意遮住真实域名、用户名、Token、私钥路径和浏览器验证信息。

7. 参考资料