用 Cloudflare Tunnel 实现从外网 SSH 登录内网服务器

#Cloudflare #Linux

🟩 一、准备工作

你需要:

  • 一个 Cloudflare 已接管的域名(你已经有 fireicesion.cc)

  • 内网服务器(Windows / Linux 都可以)

  • cloudflared 已安装(你已经有)

 

🟩 二、创建 SSH 专用 Tunnel(你已有 Tunnel 可复用)

你已经有:

代码
 
my-tunnel

所以你不需要重新创建。

如果要新建:

代码
 
cloudflared tunnel create ssh-tunnel
 

🟩 三、修改 config.yml(添加 SSH 代理规则)

打开你的:

代码
 
D:\OneDrive\tools\cloudflared\config.yml

在 ingress 中添加 SSH 规则:

yaml
 
tunnel: my-tunnel
credentials-file: C:\Users\x13 2024\.cloudflared\2d159a09-d0b2-4884-9fad-d7dccef53ae3.json

ingress:
  - hostname: ssh.domainname.cc
    service: ssh://localhost:22
  - hostname: manage.domainname.cc
    service: http://localhost:5056
  - service: http_status:404

⚠️ 注意:

  • Windows 服务器默认没有 SSH,需要安装 OpenSSH Server

  • Linux 默认 22 端口即可

 

🟩 四、Cloudflare Zero Trust 中添加 Public Hostname

进入:

代码
 
https://one.cloudflare.com

路径:

代码
 
Networks → Tunnels → my-tunnel → Public Hostnames → Add

填写:

  • Hostname: ssh.domainname.cc

  • Service: ssh://localhost:22

保存后 Cloudflare 会自动创建 DNS 记录。

 

🟩 五、客户端安装 cloudflared(外网电脑)

你要从外网 SSH,需要在外网电脑安装 cloudflared。

Windows / Linux / Mac 都可以。

 

🟩 六、外网电脑运行 cloudflared access ssh

外网电脑执行:

代码
 
cloudflared access ssh --hostname ssh.domainname.cc

第一次会弹出浏览器要求登录 Cloudflare(Zero Trust 认证)。

认证成功后,cloudflared 会自动生成 SSH 配置。

 

🟩 七、外网电脑 SSH 登录内网服务器

现在你可以直接:

代码
 
ssh finder@ssh.domainname.cc

Cloudflare 会自动:

  • 建立加密隧道

  • 验证身份

  • 转发 SSH 流量

  • 连接到内网服务器

 

🟩 八、可选:免浏览器登录(自动生成 SSH config)

cloudflared 会自动生成:

代码
 
~/.ssh/config

内容类似:

代码
 
Host ssh.domainname.cc
  ProxyCommand cloudflared access ssh --hostname %h

之后你可以直接:

代码
 
ssh finder@ssh.domainname.cc

无需再打开浏览器。

 

 

🟩 九、可选:使用windows的OpenSSH代理

安装 Windows OpenSSH
Windows 10/11 自带,只是默认可能没启用。启用方式:设置 → 应用 → 可选功能 → 添加功能 → OpenSSH Client

然后在如下配置文件中添加

C:\Users\x13 2024\.ssh\config

Host htpc
  HostName htpc_ssh.xxxxxxx.cc
  User htpc
  ProxyCommand D:\OneDrive\tools\cloudflared\cloudflared.exe access ssh --hostname %h

ProxyCommand cloudflared access ssh --hostname %h

关键点:ProxyCommand 是 OpenSSH 的功能
这是 OpenSSH 专用语法。
如果 Windows 没有安装 OpenSSH Client,那:
ssh 命令不存在
~/.ssh/config 不会被读取
ProxyCommand 根本无法执行

配置好后在ssh工具中

image

 

评论 (0)

暂无评论,快来发表第一条评论吧!