Fork me on GitHub

配置多个git账户

在使用git过程中,会遇到使用多个ssh-key的情况,比如:github使用一个账号,gitee使用另一个账户。为了区分不同的ssh-key ,则创建多个密钥对文件。

  1. 生成github的ssh-key

    ssh-keygen -t rsa -C “aaa@bbb.com” -f ~/.ssh/id_rsa-github

    过程中会要求输入密码,直接回车为空即可。

    此时会产生id_rsa-github和id_rsa-github.pub两个文件。

    如果不指定则默认文件id_rsa和id_rsa.pub。

  2. 同样的方式为gitee生成两个文件id_rsa-gitee和id_rsa-gitee.pub

  3. 默认情况下ssh-agent读取id_rsa,因此把添加到 ssh-agent 的高速缓存中。

    ssh-add ~/.ssh/id_rsa-github

  4. 把公有粘贴到github或gitee的账户下即可。

  5. 在~/.ssh/目录下新建文件config,在里面指定不同的私钥对应的不同git服务器。

    github的配置

    1
    2
    3
    4
    Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa-github

    gitee的配置

    1
    2
    3
    4
    Host gitee.com
    HostName gitee.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id-rsa-gitee
  6. 测试连接

    ssh -T github.com
    ssh -T gitee.com

  7. 查看配置信息

    git一般会根据配置文件的user.name和user.email来获取作者信息,如果使用不同账户信息的话,需要在使用前修改配置。

    1
    2
    3
    4
    5
    6
    7
    8
    # 查看配置信息
    git config --list
    # 设置全局的name和email
    git config --global user.name "bbb"
    git config --global user.email "aaa@xxx.com"
    # 设置团队项目的name和email,每次新创建一个项目,需要执行下
    git config --local user.name "bbb"
    git config --local user.email "aaa@xxx.com"