文章目录
  1. 1. 思路
  2. 2. 解决步骤
  3. 3. 参考资料

最近帮朋友利用Github Pages搭建了一个小站,需要一个git账号。而我又有两个git账号,一个用来工作,一个用来学习,这就面临着如何在同一台电脑上同时管理三个git账号的问题。好了问题明确了,下面就是整理思路解决问题的过程。

思路

Secure Shell (SSH) 是一个允许两台电脑之间通过安全的连接进行数据交换的网络协议。加密保证了数据的保密性和完整性。SSH More

Github是基于SSH加密协议进行登录的,一般有两种登录方式:

  • 基于用户名密码的登录方式
  • 基于密钥的登录方式

关于两者的区别可以参考浅谈远程登录时,ssh的加密原理

显然,本文要谈的是基于秘钥的登录方式。根据ssh的加密原理我们得知:

  • 一个Github账号对应电脑上一对公钥私钥,几个账号就需要几对

下面问题是:该如何在一台电脑上区分多个账号对应的多对公钥私钥?

解决步骤

1、通过文件名来区分不同账号生成的对应的公钥私钥文件

  • 比如a、b账号在.ssh文件夹下可以按这样命名:a_id_rsaa_id_rsa.pubb_id_rsab_id_rsa.pub

2、通过config配置文件自定义不同的Host并定位具体对应的公钥私钥文件

  • 在.ssh文件夹下新建config文件(注:文件没有后缀名,文件名就是config)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    host hub.a.com 
    hostname github.com
    User git
    IdentityFile ~/.ssh/a_id_rsa
    PreferredAuthentications publickey
    host hub.b.com
    hostname github.com
    User git
    IdentityFile ~/.ssh/b_id_rsa
    PreferredAuthentications publickey

3、取消user.email、user.name全局配置

  • git config -global unset user.email
  • git config -global unset user.name

4、在每个需要操作的repo单独设置

  • git config user.email "xxx@xxx.com"
  • git config user.name "xxname"

5、再clone、push等操作时指定user、对应的host和相应的repo即可

  • git clone git@hub.a.com:arepo/arepo.git
  • git push git@hub.a.com:arepo/arepo.git

参考资料

文章目录
  1. 1. 思路
  2. 2. 解决步骤
  3. 3. 参考资料