From dbf7cc4a94f0618acf99174fa7a4e6618fc18c87 Mon Sep 17 00:00:00 2001 From: chunzhi Date: Sun, 12 Apr 2026 13:01:20 +0800 Subject: [PATCH] feat: auto-extract tunnel token from full cloudflared install command --- setup-cf-browser-ssh.sh | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/setup-cf-browser-ssh.sh b/setup-cf-browser-ssh.sh index ffd326a..2eeb257 100644 --- a/setup-cf-browser-ssh.sh +++ b/setup-cf-browser-ssh.sh @@ -57,6 +57,20 @@ SKIP_CLOUDFLARED=false ALLOW_ALL_PRINCIPALS=false DRY_RUN=false +# 从完整命令或纯 token 中提取 tunnel token +# 支持输入: "sudo cloudflared service install eyJ..." 或直接 "eyJ..." +extract_tunnel_token() { + local input="$1" + # 去掉首尾空白 + input="$(echo "$input" | xargs)" + # 如果包含 "install",取最后一个参数作为 token + if [[ "$input" == *"install "* ]]; then + input="${input##*install }" + input="$(echo "$input" | awk '{print $1}')" + fi + echo "$input" +} + SSHD_CONFIG="/etc/ssh/sshd_config" CA_PUB_FILE="/etc/ssh/ca.pub" BACKUP_SUFFIX="bak.$(date +%Y%m%d_%H%M%S)" @@ -66,7 +80,7 @@ while [[ $# -gt 0 ]]; do case "$1" in --ca-pubkey) CA_PUBKEY="$2"; shift 2 ;; --login-user) LOGIN_USER="$2"; shift 2 ;; - --tunnel-token) TUNNEL_TOKEN="$2"; shift 2 ;; + --tunnel-token) TUNNEL_TOKEN="$(extract_tunnel_token "$2")"; shift 2 ;; --skip-cloudflared) SKIP_CLOUDFLARED=true; shift ;; --allow-all-principals) ALLOW_ALL_PRINCIPALS=true; shift ;; --dry-run) DRY_RUN=true; shift ;; @@ -143,13 +157,13 @@ prompt_missing_params() { echo -e " ${CYAN}Tunnel Token 获取方式:${NC}" echo " Cloudflare One → Networks → Tunnels → 选择/创建 Tunnel → Install connector" echo "" - echo " 控制台会给你一条类似这样的命令:" + echo " 直接把控制台给你的整条命令粘贴进来,脚本会自动提取 Token:" echo -e " ${GREEN}sudo cloudflared service install eyJhIjoiZDZjN2MwNT...${NC}" echo "" - echo " 你只需要复制 eyJ 开头的那串 Token 粘贴到下面即可。" - echo " (留空则跳过隧道服务注册,之后可手动执行)" + echo " (也可以只粘贴 eyJ... Token 部分;留空则跳过隧道服务注册)" echo "" - read -rp "请输入 Tunnel Token: " TUNNEL_TOKEN + read -rp "请粘贴命令或 Token: " TUNNEL_TOKEN_RAW + TUNNEL_TOKEN="$(extract_tunnel_token "$TUNNEL_TOKEN_RAW")" fi }