👋 大家好呀!我是你们的 涛涛鱼!🐟
今天我们要聊一个超级重要的话题 —— Git 凭据管理!是不是经常因为配不好 SSH Key 抓狂?或者在公司电脑上同时搞工作项目和个人项目,账号切来切去搞得头大?🤯
别担心,涛涛鱼今天就把压箱底的绝活都教给你们!我们要让 Git 乖乖听话,既安全又方便!我们要讲的不止是 Gitea,而是通杀 GitHub、GitLab 和 Gitea 的终极方案!✨
📋 目录大纲
🌟 涛涛鱼推荐榜单
在开始之前,先给大家排个序,看看哪种方式最适合你:
SSH 密钥 🥇:最安全,配置一次,终身受用!(特别是搞 Gitea 的小伙伴,这个必须会!)
分项目配置 🥈:工作是工作,生活是生活,互不干扰,强迫症福音!
安全令牌 (Token) 🥉:企业级安全,权限控制细粒度,丢了也不怕(撤销就行)!
个人访问令牌 (PAT):比密码好用,但要保管好哦。
凭据助手:适合不想折腾的懒人,自动化管理。
🔥 方法一:分身术 —— 分项目配置 (强推!)
🧐 为什么要这么做?
想象一下,你在公司用 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-config2. 项目特定配置 (以 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-credentials3. 凭据文件 ~/.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 为例:
去 Settings -> Developer settings -> Personal access tokens -> Fine-grained tokens。
点 "Generate new token"。
选好你要操作的仓库,权限给够就行(比如
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 yes3️⃣ 把公钥告诉服务器
复制公钥内容:
cat ~/.ssh/id_ed25519_gitea.pub去你的 Gitea 网页:
设置->SSH / GPG 密钥->增加密钥。粘贴进去,搞定!
4️⃣ 测试连接
ssh -T git@gitea.myserver.com -p 2222如果看到 Hi there, You've successfully authenticated...,恭喜你!你已经打通了任督二脉!🎉
🛡️ 安全最佳实践
涛涛鱼还要啰嗦几句安全问题,毕竟数据无价!💎
权限最小化:Token 能只给 Read 权限就别给 Write,能只给一个仓库就别给所有。
定期换钥匙:Token 设置个过期时间,SSH Key 也可以一年换一次。
文件权限:
~/.ssh/目录必须是700。私钥文件 (
id_ed25519) 必须是600。凭据文件 (
.git-credentials) 必须是600。千万别把私钥传到网上去! ❌
🚑 救命啊!故障排除
遇到问题不要慌,涛涛鱼来帮忙!🐟
Q: 为什么配置了 SSH 还是让我输密码?
A:
检查
~/.ssh/config里的IdentityFile路径对不对。检查公钥是不是真的加到 Gitea/GitHub 上了。
是不是用了 HTTPS 的链接?用
git remote -v看看,如果是https://开头的,要换成git@开头的 SSH 地址哦!
Q: 多个账号搞混了怎么办?
A: 用 git config --show-origin --get user.name 看看现在的用户名是从哪个配置文件读出来的,一目了然!
好啦,今天的 Git 凭据管理 教程就到这里!希望大家都能配置得顺顺利利,代码提交得飞起!🚀
如果你觉得有用,记得给涛涛鱼点个赞哦!我们下次见!👋