Git 多账号 SSH 配置教程:同一台电脑同时用 GitHub/Gitee,避免推错仓库

适用场景与核心思路

当你需要在同一台电脑上同时使用多个 Git 平台(如 GitHub、Gitee),或同一平台的多个账号(工作号/私人号)时,最稳妥的做法是:每个账号各生成一把独立的 SSH Key,并在 ~/.ssh/config 里用不同的 Host 别名指向不同的 Key。这样每个仓库用哪个账号,是“写在远程地址里的”,不会靠记忆。

准备工作:确认你当前用的是 SSH 还是 HTTPS

进入你的项目目录,先看远程地址:

git remote -v

如果看到的是 git@github.com:xxx/yyy.git 这类格式,说明你在用 SSH;如果是 https://github.com/xxx/yyy.git,那就是 HTTPS。本文以 SSH 为主(更适合多账号)。

第1步:为每个账号生成独立 SSH Key(推荐 ed25519)

macOS/Linux 终端执行(Windows 也可以在 PowerShell 或 Git Bash 执行):

ssh-keygen -t ed25519 -C "work-github" -f ~/.ssh/id_ed25519_github_work

ssh-keygen -t ed25519 -C "personal-gitee" -f ~/.ssh/id_ed25519_gitee_personal

说明:

1) -C 是备注,随便写但建议能区分账号。

2) -f 指定文件名,关键是“不要共用默认的 id_ed25519”。

3) 生成后会得到一对文件:私钥(无扩展名)+ 公钥(.pub)。私钥只保存在本机,千万不要外传。

第2步:把公钥添加到对应平台账号

打开公钥内容并复制:

cat ~/.ssh/id_ed25519_github_work.pub

在平台的 SSH Key 管理页粘贴保存:

GitHub 官方说明:https://docs.github.com/en/authentication/connecting-to-github-with-ssh/about-ssh

Gitee 账号 SSH Key 设置入口(可从个人设置里找到):https://gitee.com/profile/sshkeys

第3步:配置 ~/.ssh/config,用 Host 别名绑定不同 Key

编辑 ~/.ssh/config(没有就新建)。示例:

Host github-work HostName github.com User git IdentityFile ~/.ssh/id_ed25519_github_work IdentitiesOnly yes

Host gitee-personal HostName gitee.com User git IdentityFile ~/.ssh/id_ed25519_gitee_personal IdentitiesOnly yes

要点:

1) Host github-work 是你自定义的别名,后面仓库远程地址会用到。

2) HostName 才是实际域名(github.com / gitee.com)。

3) IdentitiesOnly yes 用于避免系统/代理自动把其它 key 也拿去试,减少“串号”。

第4步:把仓库 remote 改成用 Host 别名(关键一步)

以 GitHub 工作账号仓库为例,把远程改成:

git remote set-url origin git@github-work:ORG_OR_USER/REPO.git

Gitee 个人账号仓库改成:

git remote set-url origin git@gitee-personal:ORG_OR_USER/REPO.git

解释:这里的 github-work / gitee-personal 会触发 ssh 去读取对应 Host 配置,从而使用正确的 Key。

第5步:验证连接与身份

分别测试 SSH 握手(不会泄露密码):

ssh -T git@github-work

ssh -T git@gitee-personal

如果是首次连接,可能提示是否信任主机指纹,输入 yes 即可。

常见问题排查(3分钟自检清单)

1) 提示 Permission denied (publickey)

先确认远程地址是否已改成 Host 别名(git remote -v),再确认公钥是否添加到了正确账号。

2) 仍然“推错号”或在多个 key 间反复尝试

检查 ~/.ssh/config 里是否写了 IdentitiesOnly yes,以及 IdentityFile 路径是否正确。

3) Windows 上找不到 ~/.ssh

默认在 C:\Users\你的用户名\.ssh。用 PowerShell 执行 cd $HOME\.ssh 即可快速定位。

小建议:给不同账号的 Git 提交信息也做隔离

SSH 解决“认证身份”,但提交作者信息来自 Git 配置。你可以为不同项目目录设置局部配置:

git config user.name "Your Name"

git config user.email "you@example.com"

这样就不会出现提交者邮箱和账号不一致的尴尬情况。

参考链接

GitHub SSH 官方文档:https://docs.github.com/en/authentication/connecting-to-github-with-ssh/about-ssh

Gitee SSH Key 设置:https://gitee.com/profile/sshkeys

用户评论 (0)

登录后参与讨论

立即登录 注册账号

暂无评论,快来抢沙发吧~

操作成功