只有IPv6怎么连SSH?Cloudflare Tunnel让IPv4网络也能丝滑访问!
书接上回。
前两天给大家推荐的那台年付$2.99的日本VPS,性价比确实高,但入手的小伙伴们普遍遇到了一个拦路虎:
"这机器只有IPv6地址,我在公司/家里的宽带只有IPv4,根本连不上SSH怎么办?"
难道每次都要用手机开热点才能连服务器?太麻烦了!
今天,我就教大家一个终极解决方案:利用 Cloudflare Tunnel(CF隧道)给你的VPS打通一条"秘密通道"。
效果: 配置好后,你可以在任何只有IPv4的网络环境下,直接通过域名连接这台VPS,无需公网IP,无需端口映射!
准备工作
在开始之前,你需要准备好以下三样东西:
- 那台$2.99的VPS(已开机)
- 一个域名(几块钱一年的那种就行),并且已经托管到了Cloudflare(免费版账户即可)
- 临时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系统
- 访问:https://github.com/cloudflare/cloudflared/releases
- 下载
cloudflared-windows-amd64.exe - 重命名为
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 [email protected]
方法二:直接使用命令连接
如果不想配置文件,也可以每次用这个命令连接:
cloudflared access ssh --hostname ssh.yourdomain.com
然后按提示输入用户名和密码。
方法三:使用SSH客户端(XShell、FinalShell等)
大部分SSH客户端都支持ProxyCommand。以XShell为例:
- 新建会话
- 主机:
ssh.yourdomain.com - 在"连接"设置里,找到"代理"选项
- 命令行填写:
cloudflared access ssh --hostname ssh.yourdomain.com
为什么不能直接SSH连接?
你可能会问:为什么不能直接 ssh [email protected] 就连上?
原因: 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 方式,不能直接连
虽然比预想的多了一步(客户端也要装软件),但配置一次后就能一劳永逸,无论你在哪里,只要有网,就能连上它!
如果你觉得教程有用,记得点个"在看"支持一下!