You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在多个GitHub账户间切换使用SSH密钥,实现双密钥正常共存?

双GitHub账户SSH密钥共存解决方案

问题根因

你当前的SSH配置中,Host github.com 规则的优先级高于全局Host *规则,所有访问GitHub的SSH请求都会优先使用你指定的个人账户密钥~/.ssh/id_ed25519,因此公司账户的认证会失败。

方案1:使用Host别名永久区分两个账户(推荐,无需手动切换)

步骤1:修改SSH配置文件

替换你原有配置中Host github.com的部分,改为两个独立的Host别名规则,修改后完整配置如下:

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa

# 公司GitHub账户配置
Host github-company
  HostName github.com
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa
  IdentitiesOnly yes

# 个人GitHub账户配置
Host github-personal
  HostName github.com
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519
  IdentitiesOnly yes

步骤2:调整仓库远程地址

  • 新克隆仓库时,根据账户类型替换地址中的github.com为对应别名:
    • 公司仓库:git clone git@github-company:公司组织/仓库名.git
    • 个人仓库:git clone git@github-personal:个人用户名/仓库名.git
  • 已克隆的现有仓库,修改对应远程地址即可,例如公司仓库执行:
    git remote set-url origin git@github-company:公司组织/仓库名.git

步骤3:验证配置

分别执行以下命令,返回对应GitHub用户名即配置生效:

  • 验证公司账户:ssh -T git@github-company
  • 验证个人账户:ssh -T git@github-personal

方案2:单仓库指定密钥(无需修改全局配置)

如果不想修改SSH全局配置,可针对单个仓库指定使用的密钥:

  • 公司仓库目录下执行:git config core.sshCommand "ssh -i ~/.ssh/id_rsa -o IdentitiesOnly=yes"
  • 个人仓库目录下执行:git config core.sshCommand "ssh -i ~/.ssh/id_ed25519 -o IdentitiesOnly=yes"
    配置后对应仓库会固定使用指定的SSH密钥,互不影响。

内容的提问来源于stack exchange,提问作者Luis Alejandro López de Anda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:45:03