怎样创建CF Tunnel
Easul Lv6

cf tunnel主要用于内网穿透,将内网的网站或ssh等信息映射到公网可以使用该功能。

以下为 ssh 映射到公网的脚本。

BASH
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/bin/bash
homePath=`cd ~ && pwd`
mkdir -p ~/software/cloudflared
cd ~/software/cloudflared
curl -L 'https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64' -o cloudflared
chmod +x ./cloudflared
echo "登录cloudflare"
./cloudflared tunnel login
echo "请输入创建的隧道名称"
read tunnalName
./cloudflared tunnel create $tunnalName
echo "请输入uuid"
read uuid
echo "请输入隧道连接的域名"
read hostName
./cloudflared tunnel route dns $tunnalName $hostName
echo "创建配置文件"
echo "tunnel: $uuid
credentials-file: $homePath/.cloudflared/$uuid.json
protocol: h2mux
ingress:
- hostname: $hostName
service: ssh://localhost:22
- service: http_status:404" > ~/.cloudflared/config.yml
echo "创建运行命令"
cat > runcmd <<EOF
#!/bin/bash
if [[ "\$1" = "start" ]];then
cd $homePath/software/cloudflared
nohup ./cloudflared --config $homePath/.cloudflared/config.yml tunnel run $tunnalName > /dev/null 2>&1 &
ps aux | grep cloudflared | grep -v grep | awk '{print \$2}' | tail -n 1' > cloudflared.pid
echo "已启动"
elif [[ "\$1" = "restart" ]];then
cd $homePath/software/cloudflared
# 使用该命令也可以
# netstat -lntp | grep cloudflared | awk '{print \$7}' | sed -r "s:(.*?)/\./.*:\1:g" | xargs kill -9
cat cloudflared.pid | xargs kill -9
nohup ./cloudflared --config $homePath/.cloudflared/config.yml tunnel run $tunnalName > /dev/null 2>&1 &
ps aux | grep cloudflared | grep -v grep | awk '{print \$2}' | tail -n 1' > cloudflared.pid
echo "已重启"
elif [[ "\$1" = "stop" ]];then
cd $homePath/software/cloudflared
cat cloudflared.pid | xargs kill -9
echo "已停止"
else
echo "参数错误"
exit 1
fi

exit 0
EOF
echo "创建系统服务"
sudo echo "
[Unit]
Description=cloudflared
After=network.target

[Service]
Type=forking
ExecStart=$homePath/software/cloudflared/runcmd start
ExecReload=$homePath/software/cloudflared/runcmd restart
ExecStop=$homePath/software/cloudflared/runcmd stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target" > /usr/lib/systemd/system/cloudflared.service
echo "开启开机自启动"
systemctl enable cloudflared
echo "运行ssh代理"
systemctl start cloudflared

echo "上边为服务端的配置
客户端链接ssh的时候,需要也下载cloudflared,然后在~/.ssh/config配置如下
Host tunnalName
ProxyCommand /path/to/cloudflared access ssh --hostname %h"

参考:

 评论