程序安装用官方的步骤就可以,比如Debian/Ubuntu(升级也是用一样的代码)
# Add cloudflare gpg key
sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-public-v2.gpg | sudo tee /usr/share/keyrings/cloudflare-public-v2.gpg >/dev/null
# Add this repo to your apt repositories
echo 'deb [signed-by=/usr/share/keyrings/cloudflare-public-v2.gpg] https://pkg.cloudflare.com/cloudflared any main' | sudo tee /etc/apt/sources.list.d/cloudflared.list
# install cloudflared
sudo apt-get update && sudo apt-get install cloudflared
装了之后在官网里面创建隧道,会有token
运行一下就可以
sudo cloudflared service install <you token>
以上是标准安装,下面可以diy改一改了不至于老是离线。
sudo nano /etc/systemd/system/cloudflared.service
默认应该是这样的
[Service]
ExecStart=/usr/bin/cloudflared tunnel run --token <你的token>
User=cloudflared
Restart=on-failure
改成这样就可以了
[Service]
TimeoutStartSec=0
Type=notify
ExecStart=/usr/bin/cloudflared --no-autoupdate tunnel run --token <你的token>
Restart=always
RestartSec=5s
User=root
后面可以重启服务
sudo systemctl daemon-reload
sudo systemctl restart cloudflared
sudo systemctl enable cloudflared
HTTP那种可以直接映射端口,
但是SSH,RDP那种不行,还需要内部认证,
最简单的先认证一个key
CF-Access-Client-Id:
CF-Access-Client-Secret:
然后还要把子域名设置好,比如ssh://子域名 然后映射的是ssh://localhost:监听端口
后面就需要用同样装了cloudflared的客户端开一个TCP连接持续
cloudflared access tcp --hostname <你的子域名> --service-token-id <你的key的ID> --service-token-secret <你的key的Secret> --listener localhost:<任意端口,别和你真正的sshd端口冲突就行>
这个正常开了之后,窗口就会继续给你shell了,正常的,再开一个窗口好了
再开一个窗口就可以连远程的ssh了
ssh <ssh用户名>@localhost -p <和上面一致的任意端口,别和你真正的sshd端口冲突就行>