同一台电脑上使用多个GitHub账号
使用需求
通常情况下,我们会有两个 github 账号:一个是公司的,另一个是私人的。由于 github 是使用 SSH key 的 fingerprint (对应的公钥id_rsa_pub)来判定你是哪个账户,而不是通过用户名,如果是在多台电脑上使用一个账号,可以为该账号添加多个 SSH key,如果是一台电脑使用多个账号,则分别生成多个 SSH key 添加到对应的账户即可。所以本文要实现的是公号和私号在 git 上同时使用,两者互不干扰。
步骤一:生成多个 SSH key
为了举例方便,这里使用 one
和 two
两个账户。
使用cd ~/.ssh切换工作目录,然后使用如下命令生成两个钥匙,中间一路回车。
ssh-keygen -t rsa -f ~/.ssh/id_rsa_one -C "one@xxx.com"
ssh-keygen -t rsa -f ~/.ssh/id_rsa_two -C "two@xxx.com"
这样会在~/.ssh目录下生成四个文件:
id_rsa.one //账号 one 的私钥
id_rsa.one.pub //账号 one 的公钥
id_rsa.two
id_rsa.two.pub
步骤二:创建配置文件 config
在 ~/.ssh目录下新建 config 文件,令不同 Host 实际映射到同一 HostName,但密钥文件不同。根据自己情况修改account-one
、account-name
、account-two
、accountTwo-name
的值。
# --- 第一个账号 ---
Host account-one # 如:gorpeln
HostName github.com
User account-name # 如:gorpeln
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_one
UseKeychain yes
AddKeysToAgent yes
# ----------------------------
# --- 第二个账号 ---
Host account-two # 如:gorpelnTwo
HostName github.com
User accountTwo-name # 如:gorpelnTwo
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_two
UseKeychain yes
AddKeysToAgent yes
# ----------------------------
步骤三:添加 SSH key 及 测试
分别登陆两个 github 账号,在 Settings
—> SSH and GPG keys
中,点击 “new SSH key”,把 “id_rsa.one.pub” 和 “id_rsa.two.pub”这两个公钥的内容分别添加到相应的账号中。
为了确认我们可以通过 SSH 连接 github,可通过输入下面命令来验证
# 验证账号一
ssh -T git@gorpeln
# 验证账号二
ssh -T git@gorpelnTwo
如果看到下面信息,就说明连接正常。
Hi gorpeln! You've successfully authenticated, but GitHub does not provide shell access.
步骤四:用户名和邮箱配置
在第二步创建配置文件 config
时,可以直接将account-one
和account-name
设置为你的主账号(账号一)名字,如我的GitHub账户名为gorpeln
,你可以了通过https://github.com/gorpeln
访问到我,则直接将account-one
和account-name
设置为gorpeln
,则对于使用主账号(账号一)操作的git仓库,正常git pull
和git push
即可,不需要其他额外的操作。全局的用户名和邮箱可以直接配置为主账号(账号一)。
对于次账号(账号二)管理的项目则需要单独配置相应的账号和邮箱。
# 设置局部 用户名/邮箱 配置
git config user.name "xxxx"
git config user.email "xxxx@xx.com"
步骤五:使用 git
git 的使用一般是从其他仓库直接 clone 或本地新建,注意配置用户名和邮箱。
如果你步骤四:用户名和邮箱配置为主账号(账号一),那么该账号操作和配置第二个账号前的操作完全相同,没有任何变化,正常操作即可。
# 远程仓库地址为:git@github.com:gorpeln/repo.git
git clone git@github.com:gorpeln/repo.git
次账号(账号二 )操作项目
# 远程仓库地址为:git@github.com:gorpeln-two/repo.git
git clone git@gorpelnTwo:gorpeln-two/repo.git
如果你使用第三方图形工具操作,如Sourcetree
,进行操作时,记得不要忘了远程仓库地址的修改。