add docs/remove-secret.sh server/config/server.yaml
This commit is contained in:
parent
fe374cfd03
commit
8d25d50376
59
docs/remove-secret.sh
Normal file
59
docs/remove-secret.sh
Normal file
@ -0,0 +1,59 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
echo "📁 当前目录:$(pwd)"
|
||||
|
||||
# ✅ 检查是否为 Git 仓库
|
||||
if [ ! -d .git ]; then
|
||||
echo "❌ 当前目录不是 Git 仓库,请切换到仓库根目录再运行此脚本。"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ✅ 检查依赖项
|
||||
for cmd in git-filter-repo gitleaks jq; do
|
||||
if ! command -v $cmd &>/dev/null; then
|
||||
echo "❌ 缺少依赖:$cmd,请先安装。"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# ✅ 设置变量并注册清理机制
|
||||
GITLEAKS_OUTPUT="gitleaks-report.json"
|
||||
EXCLUDE_FILE=$(mktemp)
|
||||
|
||||
cleanup() {
|
||||
echo "🧽 清理临时文件..."
|
||||
rm -f "$GITLEAKS_OUTPUT" "$EXCLUDE_FILE"
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
# ✅ 执行 gitleaks 检查
|
||||
echo "🔍 正在执行 gitleaks 扫描敏感文件..."
|
||||
gitleaks detect --no-banner --report-format=json --report-path="$GITLEAKS_OUTPUT" --source . --log-opts='--all'
|
||||
|
||||
# ✅ 提取泄露文件路径
|
||||
LEAK_PATHS=$(jq -r '.[].File' "$GITLEAKS_OUTPUT" | sort | uniq)
|
||||
|
||||
if [ -z "$LEAK_PATHS" ]; then
|
||||
echo "✅ 未发现泄露文件,无需清理历史版本。"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "🚨 以下文件将从 Git 历史中彻底删除:"
|
||||
echo "$LEAK_PATHS"
|
||||
|
||||
# ✅ 循环删除每个路径
|
||||
for path in $LEAK_PATHS; do
|
||||
echo "🧹 删除历史中的文件:$path"
|
||||
git filter-repo --force --path "$path" --invert-paths
|
||||
done
|
||||
|
||||
# ✅ 强制推送历史
|
||||
echo "🚀 正在强制推送到远程(覆盖历史)..."
|
||||
git push --force --all
|
||||
git push --force --tags
|
||||
|
||||
echo ""
|
||||
echo "✅ 敏感文件历史版本已彻底删除并推送完成。"
|
||||
echo "⚠️ 建议:吊销相关凭证,并审查配置文件泄露风险。"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user