如何管理多组ssh-keys 避免切换GitHub项目时重复执行ssh-add命令
解决方案
提供两种可直接落地的配置方式,按需选择即可:
方案1:全局SSH配置(设备级生效,适配所有项目)
无需针对单个项目修改配置,一次配置永久生效:
- 新建/编辑SSH配置文件:
vim ~/.ssh/config - 写入以下配置内容:
# 个人GitHub账号 Host github.com-personal HostName github.com User git IdentityFile ~/.ssh/id_rsa_my_git IdentitiesOnly yes # 公司GitHub账号 Host github.com-company HostName github.com User git IdentityFile ~/.ssh/id_rsa_company_git IdentitiesOnly yes
- 给配置文件设置正确权限,避免不生效:
chmod 600 ~/.ssh/config - 克隆项目时替换对应Host即可自动匹配密钥:
- 个人项目:将原地址
git@github.com:个人用户名/仓库名.git改为git@github.com-personal:个人用户名/仓库名.git - 公司项目:将原地址
git@github.com:公司组织名/仓库名.git改为git@github.com-company:公司组织名/仓库名.git
- 个人项目:将原地址
- 已存在的本地项目可直接修改远程地址完成适配,以个人项目为例:
git remote set-url origin git@github.com-personal:个人用户名/仓库名.git
方案2:项目级单独配置(仅对指定项目生效,不修改全局规则)
不想修改全局配置时可以单独给单个项目指定密钥:
- 进入对应项目根目录,编辑项目git配置文件:
vim .git/config - 追加对应配置即可:
- 个人项目追加:
[core] sshCommand = "ssh -i ~/.ssh/id_rsa_my_git"
- 公司项目追加:
[core] sshCommand = "ssh -i ~/.ssh/id_rsa_company_git"
附加优化:避免每次开机重复加载密钥
搭配上面的配置使用,可完全省去手动执行ssh-add的步骤:
- Mac系统:执行
ssh-add --apple-use-keychain ~/.ssh/id_rsa_my_git ~/.ssh/id_rsa_company_git,将密钥存入系统钥匙串自动加载 - Linux系统:将
ssh-add ~/.ssh/id_rsa_my_git ~/.ssh/id_rsa_company_git写入~/.bashrc或~/.zshrc配置文件,终端启动时自动加载密钥
内容的提问来源于stack exchange,提问作者mingxingwang
相关产品推荐
相关产品推荐

