這裡總結兩個功能,一個是實現 SSH 連接,一個是實現外網訪問 web 服務。
一、前置條件
這裡不多說了,你需要有一個自己的域名,並且在 cloudflare 托管的。登錄 Cloudflare 後在左側欄位選擇 Zero Trust,定義組名,選擇免費套餐。
二、SSH
在 Zero Trust 界面點 Access -> Tunnels -> Creat a tunnel
name 隨意
我建議用 docker 安裝,方便且易管理。
但是 docker 的命令需要改一下
docker run -d cloudflare/cloudflared:latest tunnel --protocol auto --no-autoupdate run --token xxxxxxxxx
docker run 後面加一個 -d 掛起運行,省的一關 terminal 服務就停了。tunnel 後面加一個 --protocol auto。在內網服務器運行後,可以 docker ps 查看一下。--token 後面是你當前 tunnel 的專屬令牌。
然後回到 zero trust 頁面,點擊 Next 或者退出後點擊剛剛創建的 tunnel,點擊 Public Hostname -> Add a public hostname。Subdomain 填寫二級域名,Domain 選擇頂級域名,Path 留空。Type 選擇 SSH,URL 寫內網服務器的局域網 IP 地址和 SSH 端口。最後點擊 Save hostname。
這時內網服務器端和網頁端都已經設置好了,不過我們還需要在客戶端配置一下 ssh:
vim ~/.ssh/config
# 添加
Host *.xxx.xxx
ProxyCommand /opt/homebrew/bin/cloudflared access ssh --hostname %h
上面 xxx.xxx 是你的頂級域名,*. 是為了適配所有二級域名,方便有多個服務器需要內網穿透的情況。
走到現在,你的客戶端應該就可以通過你定義的二級域名,成功 ssh 到你的內網服務器了。
三、Web 服務
前面步驟都一樣,只是 Type 和 URL 以及端口要按需選擇。最後也不需要修改 ssh 配置。