Git 配置多个 SSH key

以前使用 git 经常遇到这样的问题:

项目A 位于 github ,使用 ssh key A 提交代码
项目B 位于 gitlab ,使用 ssh key B 提交代码

这样本地就存储了两个私钥,在来回切换项目并提交代码的时候怎么办呢?

使用 ssh config 映射文件

~/.ssh/ 文件下创建 config 文件,内容如下:

# github user
  Host github.com
  HostName github.com
  User git 
  IdentityFile /Users/brandon/.ssh/id_rsa_github

# gitlab user
  Host gitlab.com
  HostName gitlab.com
  User git
  IdentityFile /Users/brandon/.ssh/id_rsa_gitlab

文件内容格式:

标签 描述
Host 仓库主机,对应具体项目下的.git/config中的url中的主机名
HostName 仓库主机名称
User 用户名,对于 git 来说就是固定值 git
IdentityFile ssh 私钥 路径

如上面描述的一样,Host 对应的是项目中的.git目录中config文件中的远程仓库url 的主机名,这样可以解决一个问题:假如项目 A 和项目 C 都位于 github,但是使用了不同的 ssh key 。
这种情况下可以使用如下配置:

  • 项目 A 配置, 同上
  • 项目 C 配置:
    • 项目 C/.git/config
    [remote "origin"]
      url = git@github2:brandon/project-c.git
    
  • ~/.ssh/config
# github user
Host github.com
HostName github.com
User git 
IdentityFile /Users/brandon/.ssh/id_rsa_github

Host github2
HostName github.com
User git 
IdentityFile /Users/brandon/.ssh/id_rsa_github_2

# gitlab user
Host gitlab.com
HostName gitlab.com
User git
IdentityFile /Users/brandon/.ssh/id_rsa_gitlab

验证 ssh key

使用如下命令可以验证配置是否正确:

ssh -T github.com

补充

之前切换仓库地址的时候经常使用ssh-add命令来添加私钥,
假如从 github 切换到 gitlab

# 删除 github 私钥
ssh-add -d /Users/brandon/.ssh/id_rsa_gitlab.pub
# 添加 gitlab 私钥
ssh-add /Users/brandon/.ssh/id_rsa_gitlab

但是有了 ssh config 文件之后就不用这么麻烦了。

推荐阅读更多精彩内容

  • 在公司上班项目是push到公司自己搭的gitlab,平时自己的项目是push到github。他们分别使用的是不同的...
    issac_宝华阅读 479评论 0 0
  • 一台机器配置多个项目托管仓库,需要配置多个key 1、生成ssh-key 以github为例 $ ssh-keyg...
    陈桐Caliburn阅读 30评论 0 0
  • 我们在日常工作中会遇到公司有个gitlab,还有些自己的一些项目放在github上,这样就导致我们要配置不同的ss...
    Ewall_熊猫阅读 948评论 0 5
  • 前言 目录 配置多个 SSH先来配置 github首先执行命令 进入到ssh目录 cd ~/.ssh 如果你以前没...
    xx_Coding阅读 810评论 2 6
  • 有时候我们要管理多个git项目,或同时在用gitlab、github、小程序的tgit。当我们给一个项目配置了SS...
    陈琰AC阅读 68评论 0 0