diff --git a/scripts/push-build.sh b/scripts/push-build.sh index 380da8b..e4cadd0 100644 --- a/scripts/push-build.sh +++ b/scripts/push-build.sh @@ -37,6 +37,22 @@ if [ -f .env ]; then set -a; . ./.env; set +a fi +# Git Bash 的 $HOME 常是 /home/,而 Windows 上生成的密钥在 C:\Users\\.ssh 下。 +# 这里自动兜底,避免在 Git Bash 里 ssh 找不到私钥而报 publickey denied。 +if [ -z "${SSH_KEY:-}" ]; then + # Windows 用户目录优先:Git Bash 的 $HOME 下可能还躺着一把无关的旧钥匙 + for cand in "/c/Users/${USERNAME:-}/.ssh/id_ed25519" "${USERPROFILE:-}/.ssh/id_ed25519" "$HOME/.ssh/id_ed25519"; do + if [ -n "$cand" ] && [ -f "$cand" ]; then + SSH_KEY="$cand" + break + fi + done +fi +if [ -n "${SSH_KEY:-}" ]; then + SSH_OPTS="$SSH_OPTS -i $SSH_KEY" + echo " 使用私钥:$SSH_KEY" +fi + TUNNEL_PID="" cleanup() { [ -n "$TUNNEL_PID" ] && kill "$TUNNEL_PID" 2>/dev/null || true; } trap cleanup EXIT