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"
|
参考: