如何在一台电脑上配置多个Github SSH

269 阅读3分钟

因为遇到需要使用两个github账号来做不同账号的代码同步,于是学习了下。主要解决同一台电脑上两个github账号切换的问题。 如果已经有主账号了,不需要再次生成,下面仅为副账号生成设置步骤。

生成副账号的SSH

第一步,我们需要为账号生成密钥: 命令:

ssh-keygen -t ed25519 -C "your_email@work.com"

在输入命令,修改对应的邮箱后,回车。

需要注意的是,当其出现以下提示时,需要手动修改一下文件名, 否则可能会覆盖已有的默认 SSH,比如我们修改成 ~/.ssh/work_ed25519,注意此处的路径,如果前面的路径设置没效果或者错误,可以使用绝对路径/Users/you/.ssh/work_ed25519

Enter file in which to save the key (/Users/you/.ssh/id_ed25519): ~/.ssh/work_ed25519

然后一路按 enter 即可。接下来我们可以通过以下方法来确认是否成功生成密钥:

ls ~/.ssh/ id_ed25519
id_ed25519.pub work_ed25519
work_ed25519.pub

若列出以上文件则表示成功。

添加SSH公钥

把生成的公钥传入 GitHub 中,在github头像上点击出菜单,settings,在设置页面左侧菜单栏中找到SSH and GPG keys,然后选择 New SSH key 并把 work_ed25519.pub 中的公钥复制进去即可。

将 SSH 密钥加入 ssh-agent 并进行配置

打开 ~/.ssh/ 下的 config (若没有的话新建即可,就是一个config文件,没有后缀)文件并输入以下的信息并保存:

Host github.com 
	User mainUsername
	AddKeysToAgent yes 
	IgnoreUnknown UseKeychain 
	IdentityFile ~/.ssh/id_ed25519 
Host work.com 
	HostName github.com 
	User subUsername 
	AddKeysToAgent yes 
	IgnoreUnknown UseKeychain 
	IdentityFile ~/.ssh/work_ed25519

需要注意的几个点:

  1. 第一组可以设置成默认的主账号,这样clone时可以不需要修改。第二组设置为副账号,在clone时就需要进行修改了,下面会单独来说下如何修改。
  2. User这里需要填写账号的用户名,可以在settings页面的头像旁看到,括号中的就是账号的用户名,需要确定好不要写错。
  3. 确认好IdentityFile所对应的生成账号文件。

如何使用副账号进行Clone

配置就完成啦,当我们需要 clone 公司的项目时,只需要略微修改其 SSH 即可:

# 原始链接
git@github.com:公司名/项目名.git 
#需要修改成
git@work.com:公司名/项目名.git

需要修改的地方有两处:

  1. github.com 需要修改为config文件中配置的Host work.com
  2. 公司名,需要修改为config文件中配置的User subUsername

配置工作区账号

通过 git config user.email 来查看当前邮箱时,发现其实还是主账号的邮箱,这样副账号commit时,会使用主账号来进行推送。这时就需要配置对应的工作区账号。 在项目目录执行如下命令:

git init
git config --local user.email work@email.com

work@email.com 为副账号的邮箱。这样我们就为该工作区配置好了正确的信息。在配置完工作区账号后,我们可以通过 git config user.email来查看当前目录下的邮箱,就已经替换成副账号的邮箱了。

配置流程可以总结如下:

  1. 为副账号配置SSH
  2. 将SSH公钥配置到Github
  3. 配置Config文件
  4. 设置工作区user.email