Git SSH 多账号配置全攻略:同机同时用 GitHub/Gitee(Win/Mac/Linux)

你要解决的问题(为什么会“串号”)

很多人一台电脑既要用公司 GitHub,又要用个人 GitHub / Gitee。默认情况下,SSH 只会拿“第一个匹配的密钥”去认证,结果就出现:拉取没问题、推送提示无权限,或者推到错误账号名下。

这篇教程用“不同 Host 别名 + 不同密钥文件”的方式,让每个仓库固定走对应账号,Windows / macOS / Linux 都通用。

准备清单(开始前先确认)

  • 已安装 Git(能在终端运行 git --version)
  • 能访问目标平台:GitHub、Gitee(任选其二/其一)
  • 你知道各账号的邮箱(用于生成密钥注释)

第 1 步:为每个账号分别生成一对 SSH 密钥

进入你的 ~/.ssh 目录(没有就创建),分别生成两套密钥。下面以“GitHub 个人 + Gitee 工作”举例,你也可以按自己情况命名:

ssh-keygen -t ed25519 -C "github-personal" -f ~/.ssh/id_ed25519_github_personal ssh-keygen -t ed25519 -C "gitee-work" -f ~/.ssh/id_ed25519_gitee_work

建议:可以设置 passphrase(更安全),后面用 ssh-agent 记住它。

第 2 步:写 SSH 配置,让不同平台走不同密钥

编辑(或新建)~/.ssh/config,写入如下模板:

Host github-personal HostName github.com User git IdentityFile ~/.ssh/id_ed25519_github_personal IdentitiesOnly yes Host gitee-work HostName gitee.com User git IdentityFile ~/.ssh/id_ed25519_gitee_work IdentitiesOnly yes

关键点解释

  • Host github-personal 是你自定义的“别名”,后面仓库地址会用它。
  • IdentitiesOnly yes 可以避免系统把其他密钥也拿来试一遍,减少“撞钥匙”问题。

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

分别打开两套公钥文件(.pub),复制内容到平台的 SSH Keys 管理页面。

  • GitHub:Settings → SSH and GPG keys → New SSH key
  • Gitee:个人设置 → SSH公钥 → 添加公钥

公钥内容示例(复制整行):

cat ~/.ssh/id_ed25519_github_personal.pub cat ~/.ssh/id_ed25519_gitee_work.pub

第 4 步:用“Host 别名”克隆仓库(最重要)

从这一步开始,你的仓库地址不要再写默认的 git@github.com:...,而是用你在 config 里定义的 Host:

# GitHub 个人仓库 git clone git@github-personal:YOUR_NAME/your-repo.git # Gitee 工作仓库 git clone git@gitee-work:YOUR_ORG/your-repo.git

如果仓库已经存在,也可以改远端地址:

git remote -v git remote set-url origin git@github-personal:YOUR_NAME/your-repo.git

第 5 步:验证当前仓库到底用的是哪把钥匙

在终端测试连通性(不会真正推送代码):

ssh -T git@github-personal ssh -T git@gitee-work

你应该看到欢迎信息(GitHub 会提示你已成功认证但没有 shell 访问,这是正常的)。

常见报错排查(按出现频率排序)

1) Permission denied (publickey)

  • 确认对应平台已添加正确的 .pub 公钥(不要把私钥内容贴上去)。
  • 确认你在仓库远端地址里使用了 Host 别名:git remote -v。
  • 检查 ~/.ssh/config 里的 IdentityFile 路径是否写错、文件是否存在。

2) 多把钥匙都在试,认证变慢或串号

  • 在对应 Host 段落加上 IdentitiesOnly yes(本文模板已包含)。
  • 如果你装了多个工具(如不同 SSH 客户端),尽量统一使用系统 OpenSSH。

3) Windows 找不到 ssh / 权限问题

  • 优先使用 Windows 自带的 OpenSSH(PowerShell 里 ssh -V 可查看)。
  • 确保 C:Users你的用户名.ssh 路径下有密钥与 config。

可选增强:用 ssh-agent 免重复输入密码

如果你给密钥设置了 passphrase,可以启用 ssh-agent,把密钥加入缓存。不同系统启用方式略有差异,你只要记住一句原则:只给当前账号需要的密钥加入即可,避免过多密钥同时生效。

总结(你应该得到的结果)

  • 不同平台/不同账号都有独立密钥
  • 不同仓库通过 Host 别名自动匹配密钥
  • push/pull 不再“串号”,权限问题可快速定位

用户评论 (0)

登录后参与讨论

立即登录 注册账号

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

操作成功