1. 背景概要
在日常开发中,频繁输入 Git 账号密码不仅效率低下,且在 Windows 与 WSL 混合开发环境下,重复配置两套凭据往往会导致同步失效或冲突。
本篇博文将分享如何通过 HTTPS + Access Token 模式,实现一套凭据在 Windows 与 WSL 间无缝共用。核心逻辑在于利用 Git 的 credential helper 机制,将 Windows 端的凭据管理器(GCM)作为统一的存储后端 。
2. Gitea 端配置:生成 Access Token
为了安全性与管理的便捷,建议使用 Token 替代原始账号密码 。
- 路径:登录 Gitea ->
用户头像->Settings->Applications。 - 生成:在
Generate New Token处填写名称(如dev-machine-cli)。 - 权限控制:勾选
repo(读写仓库权限)即可。 - 保存:⚠️ 注意:Token 仅显示一次,请立即存入你的密码管理器。
验证 Token 有效性:
Bash
curl -u 用户名:你的Token https://git.devwiki.net/api/v1/user
3. 客户端环境清理
在配置新机制前,必须确保旧的凭据缓存已被彻底清除,否则会触发 403 错误。
3.1 Windows 端
- 物理删除:执行
del %USERPROFILE%\.git-credentials。 - 凭据管理器:进入“控制面板 -> 用户帐户 -> 凭据管理器”,删除所有
git:https://git.devwiki.net相关的记录。
3.2 Linux / WSL 端
Bash
rm -f ~/.git-credentials
git credential-cache exit
4. 统一凭据存储配置(核心步骤)
4.1 Windows 端配置
直接调用 Windows 原生的凭据管理器(GCM):
Bash
git config --global credential.helper manager-core
4.2 WSL 端配置(跨环境共用 ⭐)
这是实现“一次登录,全环境通行”的关键。通过在 WSL 中直接调用 Windows 的 .exe 程序,实现凭据共享 。
Bash
# 关键指令:路径必须使用单引号包裹,且开头带有 '!'
git config --global credential.helper '!"/mnt/c/Program Files/Git/mingw64/bin/git-credential-manager-core.exe"'
🔍 避坑点拨:
- 必须加
!:告诉 Git 这是一个外部的可执行程序。 - 路径转义:如果你的 Git 安装路径不同,请通过
ls "/mnt/c/Program Files/Git/" -R | grep credential-manager确认.exe的准确位置。
5. 首次认证与验证
配置完成后,在任一终端(Windows 或 WSL)执行 git pull 。
- Username: 填写 Gitea 用户名。
- Password: 填写上文生成的 Access Token(切记不是登录密码)。
认证成功后,Token 将持久化存储在 Windows 凭据管理器中,后续所有操作均可实现免密认证 。
6. 常见问题排查(避坑指南)
根据博主实战踩坑经验,如遇异常请按以下顺序排查:
-
403 Forbidden:通常是 Token 权限不足或本地旧凭据未删干净。尝试执行
git credential-manager erase重置。 -
Command not found (WSL):检查
git-credential-manager-core.exe路径是否正确。 -
内网证书问题:如果是内网私有化部署且未配置合法证书,可临时关闭校验(不推荐长期使用):
Bash
git config --global http.sslVerify false -
多账号冲突:如果该服务器有多个 Gitea 账号,需开启路径感知:
Bash
git config --global credential.useHttpPath true
7. 总结
通过 HTTPS + Access Token 配合 GCM 的方案,我们不仅规避了明文存储密码的风险,还打通了 Windows 与 Linux 子系统之间的认证壁垒 。
配置推荐表
| 环境 | 推荐 Helper 模式 | 存储安全性 |
|---|---|---|
| Windows | manager-core |
高(系统级加密) |
| WSL (推荐) | 调用 Windows GCM | 高(全环境共用) |
| 独立 Linux | libsecret |
中(需 GUI 环境支持) |
| CI/CD 环境 | store |
低(明文存储,仅建议临时使用) |