生成、添加用于操作多个 Git 账户的 SSH 公钥配置

一、场景介绍

  • 当一个用户端是公共设备并同时给不同的人使用,不同的 Git 账户需要向不同的 Git 服务器仓库推送代码时,一个 Git 账户的 SSH 配置就满足不了现有的需求

  • 我们需要在公共设备端配置多个不同的 Git 服务器的 SSH 账号,来解决用户端为公共设备同时供多个人使用的情况

  • 不同的 Git 账户,相同的 Git 服务器仓库也同样适用此配置方案(但是有特别注意的点,指定步骤有详细说明) ,然后在每个独立的项目中配置局部的用户名和邮箱

二、清除残留(针对已经配置过单用户的环境)

  1. 删除 .ssh 文件夹

    1

  2. 打开终端删除全局用户和邮箱配置

    # 查看全局用户和邮箱配置信息
    git config --global -l
    
    # 如果存在则清除全局用户和邮箱配置
    git config --global --unset user.name "你的名称"
    git config --global --unset user.email "你的邮箱"
    
    # 查看全局用户和邮箱配置信息
    git config --global -l
    

    2

三、生成多账户 SSH-KEY

  1. 生成第一个用户 Git 账户的 SSH-KEY

    # Windows 系统
    ssh-keygen -t rsa -C "Rambo@Gitee.com" -f /c/Users/Rambo/.ssh/Rambo_Gitee_id_rsa
    # Linux 系统
    ssh-keygen -t rsa -C "Rambo@Gitee.com" -f ~/.ssh/Rambo_Gitee_id_rsa
    

    P.S

    • 这里的 xxx@xxx.com 只是生成的 SSH-KEY 名称,并不约束或要求具体命名为某个邮箱

    • 现网络大部分教程均讲解的使用邮箱生成,其一开始的初衷仅仅是为了辨识,所以使用了邮箱

  2. 生成第二个用户 Git 账户的 SSH-KEY

    # Windows 系统
    ssh-keygen -t rsa -C "Cherlly@Gitee.com" -f /c/Users/Rambo/.ssh/Cherlly_Gitee_id_rsa
    # Linux 系统
    ssh-keygen -t rsa -C "Cherlly@Gitee.com" -f ~/.ssh/Cherlly_Gitee_id_rsa
    
  3. 如果有多个账户,按照上面的命令继续生成即可

    3

四、配置方案

配置方案一(如果是不同的仓库服务器推荐采用此方式)
  1. .ssh 文件夹下新建一个 config 文件,添加如下内容

    # Rambo's Gitee 服务器
    Host gitee.com
    HostName gitee.com
    PreferredAuthentications publickey
    IdentityFile C:\Users\Rambo\.ssh\Rambo_Gitee_id_rsa
    User Rambo
    
    # Cherlly's GitHub 服务器
    Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile C:\Users\Rambo\.ssh\Cherlly_Gitee_id_rsa
    User Cherlly
    

    P.S

    • Host:每个 Host自定义别名和 HostName 配置的域名相同

    • HostName:填写 Git 服务器的域名

    • IdentityFile:指定私钥的路径

    • User:登录名

  2. 不同的账户复制对应账户生成后的 SSH-KEYxxx.pub) 通过仓库主页管理部署公钥管 → 添加生成的 PUBLIC-KEYGIT 仓库中

    4

  3. 添加后,在终端(Terminal)中输入如下命令验证是否添加和授权成功

    # ssh -T git@Host设置的值
    ssh -T git@gitee.com
    
    ssh -T git@github.com
    

    5

  4. 添加成功后,就可以使用 SSH 协议对仓库进行操作了

  5. 如果是重新生成新的,或者更改别的账户,删除 .ssh 文件夹即可

配置方案二(如果是相同的仓库服务器推荐采用此方式)
  1. .ssh 文件夹下新建一个 config 文件,添加如下内容

    # Rambo's Gitee 服务器
    Host gitee.com
    HostName gitee.com
    PreferredAuthentications publickey
    IdentityFile C:\Users\Rambo\.ssh\Rambo_Gitee_id_rsa
    User Rambo
    
    # Cherlly's Gitee 服务器
    Host Cherlly.gitee.com
    HostName gitee.com
    PreferredAuthentications publickey
    IdentityFile C:\Users\Rambo\.ssh\Cherlly_Gitee_id_rsa
    User Cherlly
    

    P.S

    • Host:每个 Host自定义别名,最多只能设置一个账户的配置和 HostName 保持一次,方便操作

    • HostName:填写 Git 服务器的域名

    • IdentityFile:指定私钥的路径

    • User:登录名

  2. 不同的账户复制对应账户生成后的 SSH-KEYxxx.pub) 通过仓库主页管理部署公钥管 → 添加生成的 PUBLIC-KEYGIT 仓库中

    6

  3. 添加后,在终端(Terminal)中输入如下命令验证是否添加和授权成功

    # ssh -T git@Host设置的值
    ssh -T git@gitee.com
    
    ssh -T git@Cherlly.gitee.com
    

    7

  4. 添加成功后,就可以使用 SSH 协议对仓库进行操作了

    配置文件中 HostHostName 不一致的配置账户需特别注意

    • 由于仓库中的项目 SSH 下载链接都是采用如下方式的

      git@gitee.com:xxx/java-base-sample.git
      
    • 但是如上方式的前缀在这种配置中无法验证,所以每次都要修改 SSH 的原链接域名为自定义 Host

      git@Cherlly.gitee.com:xxx/java-base-sample.git
      
  5. 如果是重新生成新的,或者更改别的账户,删除 .ssh 文件夹即可

五、关于局部账户和全局账户的设置

  • 如果一个设备被多个人使用,或者一个人在不同的项目需要表现不同的账户操作仓库的信息

  • 我们可以采用全局账户和局部账户配置的方式

  • 如果在多数项目中采用相同的账户信息,那么我们可以设置 Git 的全局账户

    # 通过 git bash 进入每个独立项目的根目录
    cd /project
    
    # 设置局部用户名
    git config --global user.name "Xxxx"
    
    # 设置局部邮箱
    git config --global user.email "xxx@xx.com"
    
    # 查看当前仓库的配置信息
    git config --list
    
  • 在需要特别显示 Git 账户的项目中设置局部账户信息

    # 通过 git bash 进入每个独立项目的根目录
    cd /project
    
    # 设置局部用户名
    git config user.name "Xxxx"
    
    # 设置局部邮箱
    git config user.email "xxx@xx.com"
    
    # 查看当前仓库的配置信息
    git config --list
    

    在这里插入图片描述

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页