Git 多账号 SSH 配置:为 GitHub/Gitee 分开密钥与 Host 别名

当你同时维护工作/个人账号,或者同时用 GitHub 与 Gitee 时,最常见的痛点是:同一台电脑上 SSH 只认一把默认密钥,导致推送时“串号”、PR 归属不对,甚至反复弹登录。解决思路很简单:给不同账号生成不同密钥,然后用 ~/.ssh/config 为每个站点建立独立的 Host 别名,让 Git 在不同仓库里走不同身份。

准备工作:确认你现在用的是 SSH 还是 HTTPS

先进入任意仓库目录,查看远端地址:

git remote -v

如果看到 git@github.com:... 或 git@gitee.com:...,说明你在用 SSH;如果是 https://...,也可以按本文切到 SSH(更省心,且不需要频繁输入密码/令牌)。

为不同账号分别生成 SSH 密钥

建议按“平台 + 用途”命名文件,避免覆盖默认 id_rsa:

ssh-keygen -t ed25519 -C "work@example.com" -f ~/.ssh/id_ed25519_github_work

ssh-keygen -t ed25519 -C "me@example.com" -f ~/.ssh/id_ed25519_gitee_personal

生成完成后,把对应的公钥(.pub 文件内容)分别添加到平台账号里:

工具地址/参考链接:

https://docs.github.com/en/authentication/connecting-to-github-with-ssh

https://gitee.com/help/articles/4181

核心配置:用 ~/.ssh/config 做 Host 别名分流

打开(或新建)~/.ssh/config,写入类似下面的配置。注意:Host 是你自定义的“别名”,并不是域名;IdentityFile 指向你刚生成的私钥路径。

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

可选:如果你希望更稳定地自动加载密钥,可以把密钥加入 ssh-agent(不同系统命令略有差异,以官方说明为准):

ssh-add ~/.ssh/id_ed25519_github_work

把仓库 remote 改成别名(关键一步)

配置完别名后,还需要让具体仓库使用对应别名。以 GitHub 工作仓库为例:

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

Gitee 个人仓库示例:

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

这样同一台电脑、同一个 Git 客户端,就可以在不同仓库中使用不同账号的 SSH key。

验证是否生效(不改代码也能检查)

你可以直接测试 SSH 连接(首次会提示确认指纹,确认后继续):

ssh -T git@github-work

ssh -T git@gitee-personal

如果返回信息里显示了你的用户名/欢迎语,通常就说明身份正确、密钥生效。

常见问题排查(3 个最常见坑)

1) 仍然走错账号:确认仓库 remote 是否已替换为别名(git remote -v)。

2) 提示权限拒绝:检查公钥是否添加到对应账号;以及 ~/.ssh/config 里的 IdentityFile 路径是否写对。

3) 多把钥匙混着试:给每个 Host 加上 IdentitiesOnly yes,让 SSH 只使用指定的那把 key,避免“试错过多被限流/被拒绝”。

小结:推荐的稳定习惯

把“平台/用途”写进密钥文件名;用 Host 别名区分;每个仓库明确绑定 remote。一次配置好,以后换电脑或重装系统也可以直接复用这套思路快速恢复。

用户评论 (0)

登录后参与讨论

立即登录 注册账号

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

操作成功