Git 提交与推送:最安全的本地实践总结


结论

对日常本地开发来说,最安全、最稳妥的方式通常是:

  • 优先使用 SSH 认证
  • 仅在需要 HTTPS 或自动化脚本时使用 token
  • 不再使用“用户名 + 密码”直接推送代码

简而言之:

  • 日常手动提交/推送:推荐 SSH
  • 自动化、CI/CD、脚本、跨机器:推荐 token 或 GitHub App
  • 不推荐:直接保存账号密码到 Git

为什么 SSH 更安全

SSH 的核心优点在于:

  • 私钥保存在本地,不会随代码上传
  • 远端只存公钥,远程服务器不需要你每次输入密码
  • 比传统用户名/密码更难被窃取和复用
  • 不容易在终端历史、配置文件或脚本中泄露凭据

通常做法是:

  1. 本地生成一对 SSH 密钥
  2. 把公钥上传到 GitHub / GitLab / Bitbucket
  3. 将仓库远程地址改为 SSH 格式
  4. 以后每次 git push 时,系统会用本地私钥验证,而不需要密码

什么时候用 Token

Token 适合以下场景:

  • 使用 HTTPS 远程地址时
  • 自动化脚本、CI/CD pipelines
  • 某些第三方工具需要 Git 访问权限
  • 你在多台机器之间统一管理凭据

不过要注意:

  • 只授予最小必要权限
  • 优先使用 Fine-grained PAT 或最小权限 token
  • 不要把 token 填进代码、提交记录或共享配置中
  • 最好交给 Git Credential Manager 或安全密码管理器保管

不建议的做法

以下方式通常不够安全:

  • 直接使用账号密码推送
  • 把 token 直接写进 .git/config 或脚本中
  • 把私钥上传到仓库或云盘
  • 在公共终端中输入密码并长期保留

最安全的组合建议

如果你想要一个实际可执行的推荐方案:

  • 人工开发与日常提交:SSH
  • 自动化工具与脚本:token / GitHub App
  • 本地密钥管理:设置 passphrase,并保管好 ~/.ssh 目录
  • 定期轮换:定期更新 SSH key 和 token

实际操作建议

1. 生成 SSH key

Windows PowerShell:

ssh-keygen -t ed25519 -C "your_email@example.com"

之后按提示保存到默认路径,通常是:

~/.ssh/id_ed25519

2. 添加到 Git 托管平台

复制公钥:

Get-Content ~/.ssh/id_ed25519.pub

然后在 GitHub → Settings → SSH and GPG keys 中添加该公钥。

3. 改成 SSH 远程地址

查看当前远程:

git remote -v

修改为 SSH:

git remote set-url origin git@github.com:你的用户名/你的仓库.git

4. 测试链接

ssh -T git@github.com

如果成功,说明 SSH 已经可用。

结论一句话

如果你是本地开发者,最安全且最省心的方案是:用 SSH 作为主认证方式,只有在自动化场景下才使用 token;不要再把账号密码直接拿来推送代码。

这也是目前最被广泛推荐、最稳妥的 Git 安全实践。