fix: Git Bash 下自动定位 Windows 用户目录的私钥

This commit is contained in:
toom1996
2026-10-21 00:06:41 +08:00
parent 49f8ea9358
commit e18c5a0815

View File

@ -37,6 +37,22 @@ if [ -f .env ]; then
set -a; . ./.env; set +a
fi
# Git Bash 的 $HOME 常是 /home/<user>,而 Windows 上生成的密钥在 C:\Users\<user>\.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