当前位置: 首页 > article >正文

Git上传了秘钥如何彻底修改包括历史记录【从安装到实战详细版】

使用 BFG Repo-Cleaner 清除 Git 仓库中的敏感信息

1. 背景介绍

在使用 Git 进行版本控制时,有时会不小心将敏感信息(如 API 密钥、密码等)提交到仓库中。即使后续删除,这些信息仍然存在于 Git 的历史记录中。本文将介绍如何使用 BFG Repo-Cleaner 工具彻底清除这些敏感信息。

2. 准备工作

2.1 环境要求

  • Java 运行环境(JRE 8 或更高版本)
  • Git 客户端
  • 需要清理的 Git 仓库

2.2 下载 BFG

  1. 访问 BFG 官方下载页面:https://repo1.maven.org/maven2/com/madgag/bfg/1.13.0/
  2. 下载 bfg-1.13.0.jar 文件
  3. 将下载的 jar 文件放在你的项目父目录下

3. 使用步骤

  • 我的yml 文件
mybatis:
  mapper-locations: classpath:mappers/*xml
  type-aliases-package: cn.yam.mcp.entity
server:
  port: 9091
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mcp-test-db
    username: root
    password: 1234
    driver-class-name: com.mysql.cj.jdbc.Driver

deepseek:
  api-key: sk-1234

logging:
  level:
    root: INFO                # 全局日志级别
#    org.springframework: DEBUG # Spring 框架的日志
#    org.springframework.web: DEBUG # Spring Web 的日志
#    org.springframework.jdbc: DEBUG # Spring JDBC 的日志

3.1 创建替换规则文件

  1. 在项目父目录下创建 secrets.txt 文件
  2. 添加替换规则,例如:
regex:sk-[a-zA-Z0-9]{32}==>***REMOVED***
regex:api-key:.*==>api-key: ***REMOVED***

这里的规则说明:

  • 第一行匹配形如 sk- 开头的 32 位字符的 API 密钥
  • 第二行匹配整个 api-key 配置行

3.2 目录结构示例

spring4test_proj/
├── bfg-1.13.0.jar
├── secrets.txt
└── Spring-MCP-starter/    # 你的 Git 仓库

3.3 执行清理命令

在项目父目录下执行:

java -jar bfg-1.13.0.jar --replace-text secrets.txt Spring-MCP-starter --no-blob-protection

参数说明:

  • --replace-text secrets.txt: 指定替换规则文件
  • Spring-MCP-starter: 指定要清理的仓库目录
  • --no-blob-protection: 允许修改最新的提交

3.4 清理和更新

进入仓库目录,执行:

cd Spring-MCP-starter
git reflog expire --expire=now --all && git gc --prune=now --aggressive

3.5 推送更改

git push origin --force --all

4. 注意事项

  1. 在执行清理前,确保已备份重要数据
  2. 使用 --force 推送会重写远程仓库的历史,团队其他成员需要重新克隆仓库
  3. 清理后要立即修改已泄露的密钥
  4. 建议在 .gitignore 中添加包含敏感信息的文件
  5. 考虑使用环境变量或配置管理工具来管理敏感信息

5. 最佳实践

  1. 使用配置模板文件

    # application.yml.template
    deepseek:
      api-key: ${DEEPSEEK_API_KEY}
    
  2. .gitignore 中添加

    application.yml
    
  3. 使用环境变量或专门的配置管理工具存储敏感信息

参考资料

  • BFG Repo-Cleaner 官方文档
  • Git 文档

http://www.kler.cn/a/519769.html

相关文章:

  • Linux 内核学习(5) --- Linux 内核底半部机制
  • 定时器按键tim_key模版
  • 云计算的概念与特点:开启数字化时代的新篇章
  • 飞牛 fnOS 安装8852be网卡驱动并成功连接
  • 正则表达式基础与应用
  • 手撕B-树
  • Kafka 如何实现高性能
  • 【AI日记】25.01.25
  • 【C++总览】
  • Fossil源码在Windows下编译
  • Kafka运维宝典 (二)- kafka 查看kafka的运行状态、broker.id不一致导致启动失败问题、topic消息积压量告警监控脚本
  • 【DIY小记】减肥10kg保持半年的经验分享
  • 蓝桥杯试题:整数反转
  • Spring Data JPA 实战:构建高性能数据访问层
  • 基于SpringBoot的软件产品展示销售系统
  • w173疫苗发布和接种预约系统
  • 利用metaGPT多智能体框架实现智能体-1
  • Midjourney中的强变化、弱变化、局部重绘的本质区别以及其有多逆天的功能
  • Spring Boot - 数据库集成04 - 集成Redis
  • ceph基本概念,架构,部署(一)
  • 新手理解:Android 中 Handler 和 Thread.sleep 的区别及应用场景
  • 高并发问题的多维度解决之道
  • PyTorch广告点击率预测(CTR)利用深度学习提升广告效果
  • C++中的显式构造和隐式构造
  • docker设置开机自启操作
  • YOLO目标检测3