书接上回。

前两天给大家推荐的那台年付$2.99的日本VPS,性价比确实高,但入手的小伙伴们普遍遇到了一个拦路虎:

"这机器只有IPv6地址,我在公司/家里的宽带只有IPv4,根本连不上SSH怎么办?"

难道每次都要用手机开热点才能连服务器?太麻烦了!

今天,我就教大家一个终极解决方案:利用 Cloudflare Tunnel(CF隧道)给你的VPS打通一条"秘密通道"。

效果: 配置好后,你可以在任何只有IPv4的网络环境下,直接通过域名连接这台VPS,无需公网IP,无需端口映射!


准备工作

在开始之前,你需要准备好以下三样东西:

  1. 那台$2.99的VPS(已开机)
  2. 一个域名(几块钱一年的那种就行),并且已经托管到了Cloudflare(免费版账户即可)
  3. 临时IPv6环境(仅第一次配置时需要,用来安装软件。还是老办法:手机开热点给电脑连)

第一步:在VPS上安装 Cloudflared

首先,用手机热点或者有IPv6的网络,通过SSH登录到你的VPS上。

登录成功后,复制下面的命令粘贴进去,下载并安装Cloudflared(以Debian/Ubuntu系统为例):

# 下载安装包
curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb

# 安装
sudo dpkg -i cloudflared.deb

安装完成后,输入 cloudflared --version,如果能看到版本号,说明安装成功。


第二步:登录并创建隧道

这一步是把你的VPS和Cloudflare账号绑定。

1. 登录认证

在VPS里输入命令:

cloudflared tunnel login

这时候屏幕上会弹出一长串URL链接。

操作: 复制这个链接,在你电脑的浏览器里打开。登录你的Cloudflare账号,选择你的域名,点击"Authorize"(授权)。

授权成功后,VPS的屏幕上会提示"Successfully logged in"。

⚠️ 安全提示: 认证后会在 /root/.cloudflared/ 目录生成凭证文件,务必妥善保管,不要泄露!

2. 创建隧道

给你的隧道起个名字,比如叫 vps299。输入命令:

cloudflared tunnel create vps299

关键点: 命令执行后,屏幕上会显示一个 Tunnel ID(UUID格式,一串长长的字符),一定要复制下来记在记事本里!同时系统会自动生成一个 你的UUID.json 文件。

3. 绑定域名

我们要把隧道绑定到一个二级域名上,比如 ssh.你的域名.com。输入命令:

# 格式:cloudflared tunnel route dns <隧道名> <二级域名>
cloudflared tunnel route dns vps299 ssh.yourdomain.com

记得把 yourdomain.com 替换成你自己的域名!

💡 说明: 这条命令会自动在Cloudflare创建一条CNAME记录,无需手动添加DNS。

第三步:配置隧道转发SSH

我们需要告诉隧道:当外面的请求进来时,把它转发给VPS内部的SSH端口(默认是22)。

1. 创建配置文件

输入命令:

mkdir -p /root/.cloudflared/
nano /root/.cloudflared/config.yml

2. 写入配置

在编辑器里粘贴以下内容(注意替换你的UUID):

tunnel: 你的UUID
credentials-file: /root/.cloudflared/你的UUID.json

ingress:
  - hostname: ssh.yourdomain.com
    service: ssh://localhost:22
  - service: http_status:404

说明:

  • 第1行:填你刚才记下来的Tunnel ID
  • 第2行:这个.json文件在创建隧道时已自动生成
  • 第5行:填你绑定的域名
  • 最后一行:默认404规则(必须保留)

Ctrl+O 保存,按 Ctrl+X 退出。


第四步:启动并设置开机自启

配置写好了,现在我们要启动它,并让它以后开机自动运行。

# 安装服务
cloudflared service install

# 启动服务
systemctl start cloudflared

# 查看状态
systemctl status cloudflared

如果看到绿色的 active (running),恭喜你,服务端配置完成!

常见问题排查

如果启动失败,用以下命令查看日志:

journalctl -u cloudflared -f

如果连接不上,检查DNS是否生效:

dig ssh.yourdomain.com

第五步:在本地电脑安装 Cloudflared

重要: 要连接隧道,你的本地电脑(客户端)也需要安装 cloudflared!

Windows系统

  1. 访问:https://github.com/cloudflare/cloudflared/releases
  2. 下载 cloudflared-windows-amd64.exe
  3. 重命名为 cloudflared.exe 并放到 C:\Windows\System32\ 目录

macOS系统

brew install cloudflared

Linux系统

# 下载安装包
curl -L --output cloudflared-linux-amd64.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb

# 安装
sudo dpkg -i cloudflared-linux-amd64.deb

安装完成后,在终端输入 cloudflared --version 验证是否成功。


第六步:配置SSH连接

现在,你可以断开手机热点,切回你只有IPv4的公司/家里WiFi了。

方法一:修改SSH配置文件(推荐)

编辑SSH配置文件:

Windows: 在用户目录下创建 .ssh\config 文件
macOS/Linux: 编辑 ~/.ssh/config 文件

写入以下内容:

Host ssh.yourdomain.com
  ProxyCommand cloudflared access ssh --hostname %h

保存后,就可以像平时一样用SSH连接了:

ssh root@ssh.yourdomain.com

方法二:直接使用命令连接

如果不想配置文件,也可以每次用这个命令连接:

cloudflared access ssh --hostname ssh.yourdomain.com

然后按提示输入用户名和密码。

方法三:使用SSH客户端(XShell、FinalShell等)

大部分SSH客户端都支持ProxyCommand。以XShell为例:

  1. 新建会话
  2. 主机:ssh.yourdomain.com
  3. 在"连接"设置里,找到"代理"选项
  4. 命令行填写:cloudflared access ssh --hostname ssh.yourdomain.com

为什么不能直接SSH连接?

你可能会问:为什么不能直接 ssh root@ssh.yourdomain.com 就连上?

原因: Cloudflare的HTTP代理默认不支持SSH协议的22端口。直接连接会显示"Connection closed"错误。

必须通过 cloudflared 客户端建立专用隧道连接才行。


进阶玩法:同时暴露Web面板

如果你的VPS上装了宝塔、1Panel等Web面板,可以同时把它也暴露出来。

修改 /root/.cloudflared/config.yml,改成这样:

tunnel: 你的UUID
credentials-file: /root/.cloudflared/你的UUID.json

ingress:
  - hostname: ssh.yourdomain.com
    service: ssh://localhost:22
  - hostname: panel.yourdomain.com
    service: http://localhost:8888
  - service: http_status:404

然后重启服务:

systemctl restart cloudflared

记得也绑定一下panel的DNS:

cloudflared tunnel route dns vps299 panel.yourdomain.com

现在你可以用 http://panel.yourdomain.com 直接访问面板了!这个不需要客户端安装cloudflared,浏览器直接打开就行。


总结

经过这波操作,这台只有IPv6的VPS,在Cloudflare Tunnel的加持下,已经变成了一台全网通的神机。

关键点回顾:

  • 服务端(VPS)要安装并配置 cloudflared
  • 客户端(你的电脑)也要安装 cloudflared
  • SSH连接必须通过 ProxyCommand 方式,不能直接连

虽然比预想的多了一步(客户端也要装软件),但配置一次后就能一劳永逸,无论你在哪里,只要有网,就能连上它!

如果你觉得教程有用,记得点个"在看"支持一下!