cloudflare 提供了不少免费的服务,其中一个就是zeroTrust中的Tunnel。这个服务在Cloudflare Zero Trust的Networks->Tunnel中,这个功能可以将一些内网的服务映射到公网上,这样我们就可以通过Cloudflare的网络来访问内网的这些服务了。
首先我们需要创建一个tunnel,这里选择cloudflared,然后给这个tunnel起个名。我们需要用下面的命令在内网中的机器上安装cloudflared。
curl -L --output cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared.deb && rm cloudflared.deb
安装完成后,使用提供的JWT连接到cloudflare。
sudo cloudflared service install eyJa40e0a77265b7e0....
连接完成后,页面下方会显示连接上。

然后我们可以配置所需要的子域名test.roskey.net
,目标放上ssh的地址127.0.0.1:22
即可。

在本地我们也需要安装cloudflared,cloudflared可以从这个连接下载。
安装好后,我们可以配置~/.ssh/config文件(windows为用户家目录下的.ssh/config/)。这里的IdentityFile使用是你正常登录服务器时所使用的私钥,也就是说不需要重新生成私钥。
Host test # 可以随意指定,主要提供给自己辨认
HostName test.roskey.net # 配置tunnel时,分配给服务端的子域名
IdentityFile ~\.ssh\private.pem
User admin
ProxyCommand C:\Program Files (x86)\cloudflared\cloudflared.exe access ssh --hostname %h
然后在命令行使用ssh test
,即可访问远端。这样既可以在命令行直接访问远端,甚至还可以在vscode里直接打开远端。以后就算没有公网IP也可以直接远程访问啦。
文章评论