cloudflared 是 Cloudflare 官方提供的一个命令行程序,主要用于建立 Cloudflare Tunnel(Cloudflare 隧道)。
简单来说:
它可以让没有公网 IP、没有开放入站端口的 Ubuntu 服务器,通过主动连接 Cloudflare 的网络,让外部用户访问你部署在家里的服务。
默认你已经在ubuntu上部署了cloudflared,如果没有请看我的这篇博文cloudflare tunnels实现内网穿透,本地网站上传到公网,ssh连接设备
本教程使用mac进行操作,如果你是其他操作系统原理也是类似的
主要就是安装cloudflared并配置相关连接的操作
准备事项:
1.一台个人电脑,比如mac
2.已经部署好cloudflared的内网设备如ubuntu
3.一个已经托管在cloudflare的自用域名
现在开始!
第一步:确认 Ubuntu 的 SSH 服务
在家庭 Ubuntu 上执行:
sudo apt update
sudo apt install openssh-server -y启动 SSH:
sudo systemctl enable --now ssh检查状态:
sudo systemctl status ssh看到 active (running) 就说明 SSH 服务正常运行。
再查看 Ubuntu 用户名:
whoami假设输出:
xizi那么之后 SSH 用户名就是 xizi。你的可能是root用root就好啦!
本地测试:
ssh xizi@localhost确认可以正常登录后退出:
exit配置好了之后还有很重要的一点linux操作系统有些时候会禁止ssh登陆root使用密码!
跟着我的操作更改一下config!
如果你想让 Ubuntu 允许通过 SSH 使用用户名和密码登录,需要修改 SSH 服务端的配置文件 sshd_config。
第一步:修改 SSH 配置
在 Ubuntu 上执行:
sudo nano /etc/ssh/sshd_config找到下面几个配置项。如果前面有 #,需要去掉注释;如果没有,就修改对应的值:
PasswordAuthentication yes
KbdInteractiveAuthentication yes
UsePAM yes另外检查是否存在:
PermitRootLogin yes注意: 如果你打算使用 root 账号登录,才需要考虑这一项。更建议使用普通用户登录,不要开放 root 密码远程登录。
第二步:检查配置是否正确
保存文件后执行:
sudo sshd -t如果没有任何输出,通常表示配置语法正确。
第三步:重启 SSH 服务
sudo systemctl restart ssh确认 SSH 正在运行:
sudo systemctl status ssh第二步:在macbook上安装cloudflared
打开 Mac 终端。
如果你已经安装 Homebrew:
brew install cloudflared如果你没有安装homebrew
请到这里安装homebrew官网

复制官网的这段命令到你的终端并回车即可安装homebrew!
检查安装:
cloudflared --version第三步:在cloudflare的dashboard里配置ssh连接入口
位置如图

然后我们点击reverse- home如果不知道这个看之前的博客上文有提起,进去配置路由
路由配置界面如图

子域名可以填ssh作为一个标记 ,域填写你的域名即可,路径不用填,服务url如上图即可本地回环的22口
这样的话即使你家里设备的内网ipv4更换丝毫没有影响
第四步:在macbook上建立连接并简化路径
一切都配置好了你需要通过mac(外网设备)连接到内网ubuntu
正确的命令是:
ssh -o ProxyCommand="cloudflared access ssh --hostname %h" 用户名@ssh.blogxizi.site重点说最后这几个字段
用户名@ssh.blogxizi.site用户名根据你的实际用户名填写,应该是root,@后面的内容应该是ssh.你的域名
正常来说你再此步之后输入密码并回车即可进入ubuntu
但这个命令太长了所以我们决定简化一下路径!
可以在 Mac 上配置 SSH 别名。以后只需要输入:
ssh home-ssh第一步:编辑 SSH 配置文件
在 Mac 终端执行:
nano ~/.ssh/config如果文件不存在,Nano 会自动创建。
第二步:添加配置
写入以下内容:
Host home-ssh
HostName ssh.blogxizi.site #这里要填你自己的
User xizi #这个是我的用户名,需要你自己的
ProxyCommand cloudflared access ssh --hostname %h保存并退出:
Control + O保存回车确认
Control + X退出
第三步:设置文件权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/config第四步:直接连接
以后在 Mac 终端输入:
ssh home-ssh配置完成
SSH 会自动使用:
域名:
ssh.blogxizi.site用户名:
xiziCloudflare Tunnel:
cloudflaredSSH 认证:按照 Ubuntu SSH 服务端的配置进行。