介绍在MacOS上管理两个Github账号的ssh key的方法,主要操作就是在ssh的配置文件~/.ssh/config中指定两个不同的Host。

前提介绍

两个github账号,分别为carl.shen和jibing57,对应使用的key如下:

  • carl.shen: id_rsa_carl_github_key
  • jibing57: id_rsa_github

其中,carl.shen是默认账号,jibing57是第二账号。

ssh 配置

两个账号,在~/.ssh/config配置文件中对应的配置如下:

1
2
3
4
5
6
7
8
9
Host "github.com"
HostName "github.com"
User "carl.shen"
IdentityFile ~/.ssh/id_rsa_carl_github_key
Host "jibing57.github.com"
HostName "github.com"
User "jibing57"
IdentityFile ~/.ssh/id_rsa_github

关键点就在于Host "jibing57.github.com"这一几个配置。
该设置的意思是: 当访问Host是jibing57.github.com, 需要使用key ~/.ssh/id_rsa_github来访问,但访问jibing57.github.com时,实际映射到的还是github.com
通过使用Host别名来实现不同的key同时访问github.com

git clone方式

jibing57/my-private-repository这个测试私有仓库为例, 来看配置后git clone的用法。其中carl.shenjibing57两个账号都有访问该测试仓库的权限。

carl.shen账号的git clone命令如下:

1
git clone git@github.com:jibing57/my-private-repository.git

jibing57账号的git clone命令如下:

1
git clone git@jibing57.github.com:jibing57/my-private-repository.git

两者的区别就在于,使用jibing57账号时,git@后面加的域名需要是在~/.ssh/config中配置的jibing57.github.com, ssh会根据jibing57.github.com这个Host,从配置文件中找到所要使用的对应的IdentityFileUser来进行访问github.com

Reference

留言