@

在我们的日常开发中,可能要用到多个账号,公司开发 gitlab ,国外开源 github ,国内开源 gitee 。这种多环境的情况下,我们就需要生成和配置多个SSH-Key。

本文基于Win10操作系统,需要安装好Git: Windows环境下Git安装和配置

1、清除git全局配置

如果在此之前配置过全局用户名和邮箱:

$ git config --global user.name "test"
$ git config --global user.email test@qq.com

可以通过git config --global --list 来查看自己的全局配置。

由于是对应不同的开发场景,我们不同环境的提交可能是不同的用户名,所以先清除这两个配置。

$ git config --global --unset user.name "test"
$ git config --global --unset user.email test@qq.com

清楚掉全局配置以后,提交代码还需要我们的用户名、邮箱怎么办?

在我们的工作目录(项目)里配置即可:

$ git config  user.name 'test'
$ git config  user.email test@qq.com

2、SSH keys

打开 git bash。

  • 2.1、生成github用的 SSH key
  • $ ssh-keygen -t rsa -C 'github邮箱号' -f ~/.ssh/id_rsa_github
    
  • 2.2、生成gitee用的 SSH key
  • $ ssh-keygen -t rsa -C 'gitee邮箱号' -f ~/.ssh/id_rsa_gitee
    

    在Windos的User Home目录(C:\Users\用户名\.ssh)下,会生成对应的文件。

  • 2.3、分别登录giteegithub添加SSH KEY
  • 这里以gitee为例,github和gitee类似,这里就不再演示。

      - 进入设置 --> SSH公钥 --> 添加公钥

      - 将我们生成的密钥 id_rsa_gitee.pub填进去

    3、配置config

  • 打开git bash,在.ssh目录下,新建并编辑config文件,命令如下:
  • $ cd ~/.ssh
    $ touch config
    $ vim config
    
  • 输入 i进入编辑模式,输入以下内容
  • # gitee
    Host gitee.com
    HostName gitee.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_gitee
    # github
    Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_github
    

    -ESC 进入命令模式输入:wq保存、退出。

    4、用ssh命令测试

    用ssh命令分别测试:

    $ ssh -T git@gitee.com
    $ ssh -T git@github.com
    

    出现下面的结果说明配置成功:

    $ ssh -T git@gitee.com
    The authenticity of host 'gitee.com (212.64.62.183)' can't be established.
    ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
    Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
    Warning: Permanently added 'gitee.com,212.64.62.183' (ECDSA) to the list of known hosts.
    Hi fighter3! You've successfully authenticated, but GITEE.COM does not provide shell access.
    
  • 上面是一个gitee仓库的路径,我们可以给项目添加github的远程仓库
  • $ git remote add github git@github.com:fighter3/dairly-learn.git
    
  • 接下来我们可以把代码 push 到github
  • $ git push github master
    

    【1】:配置同时使用 Gitlab、Github、Gitee(码云) 共存的开发环境
    【2】:Git配置多个SSH-Key