多Git平台多账号SSH Key配置与克隆推送权限设置方法
跨平台多Git账号SSH密钥配置方案
SSH config 文件配置
先找到当前用户目录下的.ssh文件夹,里面如果没有config文件就新建一个无后缀的纯文本文件命名为config,写入以下内容,注意把IdentityFile的路径替换成你自己私钥的实际存储路径:
# Github 账号:demetere Host github.com HostName github.com User git IdentityFile ~/.ssh/id_rsa_github IdentitiesOnly yes # Gitlab 主账号:demetere Host gitlab.com HostName gitlab.com User git IdentityFile ~/.ssh/id_rsa_gitlab IdentitiesOnly yes # Gitlab identomat 账号:demetere._ Host gitlab-identomat HostName gitlab.com # 如果是企业自建Gitlab实例,把上面的HostName换成对应实例域名即可 User git IdentityFile ~/.ssh/id_rsa_gitlab_identomat IdentitiesOnly yes
注意:必须加
IdentitiesOnly yes配置,强制SSH仅读取当前Host指定的私钥发起鉴权,避免SSH agent自动加载其他密钥导致身份匹配失败。
配置完成后可以分别执行以下命令验证鉴权是否正常,返回结果包含对应账号的用户名即为配置成功:
ssh -T git@github.comssh -T git@gitlab.comssh -T git@gitlab-identomat
仓库克隆、推送操作规则
- 属于Github账号、Gitlab主账号的自有仓库、公开仓库,直接使用平台提供的默认SSH地址克隆即可,不需要修改地址,推送、拉取操作和单账号场景完全一致,会自动匹配对应密钥。比如Github仓库克隆命令直接用
git clone git@github.com:owner/repo.git即可。 - 属于Gitlab identomat账号的仓库,克隆时需要把原SSH地址中
@符号后面的域名,替换为config里自定义的Host别名gitlab-identomat。比如原仓库地址是git@gitlab.com:identomat/project.git,替换后的克隆命令为git clone git@gitlab-identomat:identomat/project.git。 - 如果仓库已经提前克隆到本地,不需要重新拉取,在仓库根目录执行
git remote set-url origin 替换后的正确SSH地址即可更新远程地址。
贡献第三方仓库的Host匹配方式
核心判断逻辑是你准备用哪个身份提交贡献,就匹配对应Host规则:
- 用Github demetere账号给其他用户的Github仓库提交PR、贡献代码时,直接使用仓库提供的默认SSH地址克隆即可,自动匹配Github对应密钥。
- 用Gitlab主账号demetere给其他用户的Gitlab仓库贡献代码时,同样直接使用默认SSH地址克隆即可。
- 用Gitlab identomat账号demetere._给对应Gitlab实例上的第三方仓库贡献代码时,克隆时把地址中
@后的域名替换为gitlab-identomat别名即可,后续所有提交、推送操作都会自动使用对应账号的身份,不需要额外配置。
内容的提问来源于stack exchange,提问作者demetere._
相关产品推荐
相关产品推荐

