美文网首页
ssh-key git多账户配置

ssh-key git多账户配置

作者: gofanelena | 来源:发表于2017-04-01 15:46 被阅读0次

    在使用git的时候,一般我们使用的远程Git服务器是github,这时只需简单的生成ssh-key密钥对并将公钥添加到github中就可以使用ssh了。

    但在公司开发使用内部的git时,一般在gitlab,使用的邮箱一般是公司的邮箱,那么就需要配置多个ssh-key账户了。

    假设user使用github的邮箱为user1@163.com;user2使用gitlab的邮箱为user2@163.com,下面是配置过程:

    1. 首先进入用户主目录下的.ssh文件夹,我们生成的密钥对放在这儿
    $ cd ~/.ssh
    
    1. 分别为user1和user2生成密钥对:
      默认三次回车生成key的名字为id_rsa,注意在生成第二个的时候不要使用默认名,否则会覆盖第一个,在以下位置为第二个输入名字
    #新建SSH key
    $ ssh-keygen -t rsa -C "user1@163.com"
    $ ssh-keygen -t rsa -C "user2@163.com"
    #设置user2的命名为id_rsa_work 
    Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): id_rsa_work
    

    此时在.ssh目录下就有两个密钥对文件id_rsa和id_rsa_work,我们将公钥分别拷至对应的Git服务器

    1. 添加key到SSH agent中:
      此时还无法使用第二个服务器,因为Git会默认只读取到id_rsa,为了让SSH识别新的私钥,需将其添加到SSH agent中:
    $ ssh-add ~/.ssh/id_rsa
    $ ssh-add ~/.ssh/id_rsa_work
    

    如果出现Could not open a connection to your authentication agent的错误,就试着用以下命令:

    $ ssh-agent bash
    $ ssh-add ~/.ssh/id_rsa
    $ ssh-add ~/.ssh/id_rsa_work
    

    成功会显示:

    Identity added: /c/Users/Windows用户名/.ssh/key名 (/c/Users/Windows用户名/.ssh/key名)
    

    注意:ssh-add 这个命令不是用来永久性的记住你所使用的私钥的。实际上,它的作用只是把你指定的私钥添加到 ssh-agent 所管理的一个 session 当中。而 ssh-agent 是一个用于存储私钥的临时性的 session 服务,也就是说当你重启之后,ssh-agent 服务也就重置了。

    1. 创建并配置config文件使配置永久生效:
      在.ssh目录下新建一个文本文件,命令为config,不需要后缀,bash下可直接使用touch config,编辑以下内容:
        # gitlab
        Host gitlab的IP
            HostName gitlab的Host     //这里填你们公司的git网址即可
            PreferredAuthentications publickey
            IdentityFile ~/.ssh/id_rsa_work
            User user2
        # github
        Host github.com
            HostName github.com
            PreferredAuthentications publickey
            IdentityFile ~/.ssh/id_rsa
            User user1
    

    其规则就是:从上至下读取config的内容,在每个Host下寻找对应的私钥。按照你的情况修改就可以。

    1. 使用:如果之前有设置全局用户名和邮箱的话,需要unset一下,可通过$ git config --list来查看全局配置
    $ git config --global --unset user.name
    $ git config --global --unset user.email
    

    可以在不同的仓库下设置局部的用户名和邮箱用不同的账号登录,比如在公司的repository下:

    $ git config user.name "user2"  
    $ git config user.email "user2@163.com"
    
    1. 测试:
    $ ssh -T git@github.com
    #输出:Hi user1! You've successfully authenticated, but GitHub does not provide shell access.
    $ ssh -T git@gitlab的IP
    #输出:Hi user2@163.com**, this is git@.....
    

    测试成功。
    如果出什么问题,可以通过ssh -vT git@github.com来输出编译信息,然后根据编译信息去解决问题

    相关文章

      网友评论

          本文标题:ssh-key git多账户配置

          本文链接:https://www.haomeiwen.com/subject/krriottx.html