🚀 Git 凭据管理全攻略:从 SSH 到多账户配置
⚡ 效率提升 git 16

👋 大家好呀!我是你们的 涛涛鱼!🐟

今天我们要聊一个超级重要的话题 —— Git 凭据管理!是不是经常因为配不好 SSH Key 抓狂?或者在公司电脑上同时搞工作项目和个人项目,账号切来切去搞得头大?🤯

别担心,涛涛鱼今天就把压箱底的绝活都教给你们!我们要让 Git 乖乖听话,既安全又方便!我们要讲的不止是 Gitea,而是通杀 GitHub、GitLab 和 Gitea 的终极方案!✨


📋 目录大纲


🌟 涛涛鱼推荐榜单

在开始之前,先给大家排个序,看看哪种方式最适合你:

  1. SSH 密钥 🥇:最安全,配置一次,终身受用!(特别是搞 Gitea 的小伙伴,这个必须会!)

  2. 分项目配置 🥈:工作是工作,生活是生活,互不干扰,强迫症福音!

  3. 安全令牌 (Token) 🥉:企业级安全,权限控制细粒度,丢了也不怕(撤销就行)!

  4. 个人访问令牌 (PAT):比密码好用,但要保管好哦。

  5. 凭据助手:适合不想折腾的懒人,自动化管理。


🔥 方法一:分身术 —— 分项目配置 (强推!)

🧐 为什么要这么做?

想象一下,你在公司用 work@company.com 提交代码,回家想给自己的开源项目 cool-guy@gmail.com 提交代码。如果忘了切邮箱,把公司邮箱用到个人项目上,或者反过来,是不是很尴尬?😅

Git 的 includeIf 功能就是为此而生的!它可以根据你所在的文件夹,自动切换配置!

📂 目录结构规划

我们要打造这样的结构:

 ~/
 ├── .gitconfig                    # 🌍 全局默认配置 (兜底用的)
 ├── .config/git/
 │   ├── gitea-config             # 🐹 Gitea 专用配置
 │   ├── github-work-config       # 💼 GitHub 工作配置
 │   └── github-personal-config   # 🏠 GitHub 个人配置
 └── .config/git-credentials/
     ├── gitea-credentials        # 🔑 Gitea 密码本
     ├── github-work              # 🔑 工作密码本
     └── github-personal          # 🔑 个人密码本

🛠️ 实操开始!

1. 全局配置文件 ~/.gitconfig

这是你的主控台,告诉 Git:如果在这些目录下,就加载对应的“分身”配置!

 # ~/.gitconfig
 ​
 [user]
     name = TaoTaoYu Default
     email = default@example.com
 ​
 [init]
     defaultBranch = main
 ​
 # 👇 见证奇迹的时刻!条件配置!
 # 如果我在 ~/workspace/gitea/ 目录下,就用 gitea-config
 [includeIf "gitdir:~/workspace/gitea/"]
     path = ~/.config/git/gitea-config
 ​
 # 如果我在 ~/workspace/github-work/ 目录下,就用 github-work-config
 [includeIf "gitdir:~/workspace/github-work/"]
     path = ~/.config/git/github-work-config
 ​
 # 如果我在 ~/workspace/github-personal/ 目录下,就用 github-personal-config
 [includeIf "gitdir:~/workspace/github-personal/"]
     path = ~/.config/git/github-personal-config

2. 项目特定配置 (以 Gitea 为例)

~/.config/git/gitea-config 里,我们定义 Gitea 专用的身份:

 # ~/.config/git/gitea-config
 ​
 [user]
     name = GiteaUser
     email = me@gitea-server.com
 ​
 [credential]
     # 指定这个环境专用的凭据文件,不和别的混在一起!
     helper = store --file=~/.config/git-credentials/gitea-credentials

3. 凭据文件 ~/.config/git-credentials/gitea-credentials

这里面放你的账号密码(或者 Token),格式是 http://用户名:密码@域名

http://myusername:my_secret_token@gitea.example.com

🐟 涛涛鱼小贴士: 记得把这些凭据文件的权限设为 600 (只有你自己能读写),安全第一! chmod 600 ~/.config/git-credentials/*


🛡️ 方法二:令牌大法 —— 安全令牌 (Token)

密码太危险,Token 才安全!特别是现在的 GitHub 和 Gitea,都推荐用 Token 替代密码。

细粒度令牌 (Fine-grained Token) 是什么鬼?🤔

简单说,就是给你的钥匙加了限制:

  • 有效期:只能用 30 天,过期作废。

  • 权限:只能读代码,不能删库。

  • 范围:只能访问项目 A,不能访问项目 B。

📝 怎么用?

以 GitHub 为例:

  1. 去 Settings -> Developer settings -> Personal access tokens -> Fine-grained tokens。

  2. 点 "Generate new token"。

  3. 选好你要操作的仓库,权限给够就行(比如 Contents: Read & Write)。

拿到 Token 后,把它当做密码用在 HTTPS 连接里:

 # 方式 1:直接写在 URL 里 (简单粗暴)
 git clone https://oauth2:YOUR_TOKEN@github.com/username/repo.git
 ​
 # 方式 2:配合上面的凭据助手 (优雅)
 # 在凭据文件里写:
 https://username:YOUR_TOKEN@github.com

🔐 方法三:终极奥义 —— SSH 密钥 (Gitea 必备!)

好啦,重头戏来了!这是涛涛鱼最推荐的方式,特别是对于自建的 Gitea 服务,SSH 简直是稳如老狗!🐶

1️⃣ 生成 SSH 密钥

打开终端,输入这个魔法咒语(记得换成你的邮箱):

 # 推荐用 ed25519 算法,又快又安全!
 ssh-keygen -t ed25519 -C "your.email@example.com" -f ~/.ssh/id_ed25519_gitea

一路回车就行,如果想更安全可以设个密码(Passphrase)。

2️⃣ 配置 SSH Config (~/.ssh/config)

这一步是为了让 SSH 知道连哪个服务器用哪把钥匙。

 # ~/.ssh/config
 ​
 # GitHub 专用
 Host github.com
     HostName github.com
     User git
     IdentityFile ~/.ssh/id_ed25519_github
     IdentitiesOnly yes
 ​
 # Gitea 专用 (敲黑板!)
 Host gitea.myserver.com
     HostName gitea.myserver.com
     User git
     Port 2222  # 注意:如果你的 Gitea SSH 端口不是 22,这里一定要改!
     IdentityFile ~/.ssh/id_ed25519_gitea
     IdentitiesOnly yes

3️⃣ 把公钥告诉服务器

  1. 复制公钥内容:

    cat ~/.ssh/id_ed25519_gitea.pub
  2. 去你的 Gitea 网页:设置 -> SSH / GPG 密钥 -> 增加密钥

  3. 粘贴进去,搞定!

4️⃣ 测试连接

ssh -T git@gitea.myserver.com -p 2222

如果看到 Hi there, You've successfully authenticated...,恭喜你!你已经打通了任督二脉!🎉


🛡️ 安全最佳实践

涛涛鱼还要啰嗦几句安全问题,毕竟数据无价!💎

  1. 权限最小化:Token 能只给 Read 权限就别给 Write,能只给一个仓库就别给所有。

  2. 定期换钥匙:Token 设置个过期时间,SSH Key 也可以一年换一次。

  3. 文件权限

    • ~/.ssh/ 目录必须是 700

    • 私钥文件 (id_ed25519) 必须是 600

    • 凭据文件 (.git-credentials) 必须是 600

    • 千万别把私钥传到网上去!


🚑 救命啊!故障排除

遇到问题不要慌,涛涛鱼来帮忙!🐟

Q: 为什么配置了 SSH 还是让我输密码?

A:

  1. 检查 ~/.ssh/config 里的 IdentityFile 路径对不对。

  2. 检查公钥是不是真的加到 Gitea/GitHub 上了。

  3. 是不是用了 HTTPS 的链接?用 git remote -v 看看,如果是 https:// 开头的,要换成 git@ 开头的 SSH 地址哦!

Q: 多个账号搞混了怎么办?

A:git config --show-origin --get user.name 看看现在的用户名是从哪个配置文件读出来的,一目了然!


好啦,今天的 Git 凭据管理 教程就到这里!希望大家都能配置得顺顺利利,代码提交得飞起!🚀

如果你觉得有用,记得给涛涛鱼点个赞哦!我们下次见!👋

🚀 Git 凭据管理全攻略:从 SSH 到多账户配置
https://fnidore.top/archives/git-ping-ju-guan-li-quan-gong-lue-cong-ssh-dao-duo-zhang-hu-pei-zhi
作者
fnidore
发布于
更新于
许可