文章目录
一、场景介绍
-
当一个用户端是公共设备并同时给不同的人使用,不同的
Git
账户需要向不同的Git
服务器仓库推送代码时,一个Git
账户的SSH
配置就满足不了现有的需求 -
我们需要在公共设备端配置多个不同的
Git
服务器的SSH
账号,来解决用户端为公共设备同时供多个人使用的情况 -
不同的
Git
账户,相同的Git
服务器仓库也同样适用此配置方案(但是有特别注意的点,指定步骤有详细说明) ,然后在每个独立的项目中配置局部的用户名和邮箱
二、清除残留(针对已经配置过单用户的环境)
-
删除
.ssh
文件夹 -
打开终端删除全局用户和邮箱配置
# 查看全局用户和邮箱配置信息 git config --global -l # 如果存在则清除全局用户和邮箱配置 git config --global --unset user.name "你的名称" git config --global --unset user.email "你的邮箱" # 查看全局用户和邮箱配置信息 git config --global -l
三、生成多账户 SSH-KEY
-
生成第一个用户
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
名称,并不约束或要求具体命名为某个邮箱 -
现网络大部分教程均讲解的使用邮箱生成,其一开始的初衷仅仅是为了辨识,所以使用了邮箱
-
-
生成第二个用户
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
-
如果有多个账户,按照上面的命令继续生成即可
四、配置方案
配置方案一(如果是不同的仓库服务器推荐采用此方式)
-
在
.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
:登录名
-
-
不同的账户复制对应账户生成后的
SSH-KEY
(xxx.pub
) 通过仓库主页
→管理
→部署公钥管
→ 添加生成的PUBLIC-KEY
到GIT
仓库中 -
添加后,在终端(
Terminal
)中输入如下命令验证是否添加和授权成功# ssh -T git@Host设置的值 ssh -T git@gitee.com ssh -T git@github.com
-
添加成功后,就可以使用
SSH
协议对仓库进行操作了 -
如果是重新生成新的,或者更改别的账户,删除
.ssh
文件夹即可
配置方案二(如果是相同的仓库服务器推荐采用此方式)
-
在
.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
:登录名
-
-
不同的账户复制对应账户生成后的
SSH-KEY
(xxx.pub
) 通过仓库主页
→管理
→部署公钥管
→ 添加生成的PUBLIC-KEY
到GIT
仓库中 -
添加后,在终端(
Terminal
)中输入如下命令验证是否添加和授权成功# ssh -T git@Host设置的值 ssh -T git@gitee.com ssh -T git@Cherlly.gitee.com
-
添加成功后,就可以使用
SSH
协议对仓库进行操作了配置文件中
Host
和HostName
不一致的配置账户需特别注意:-
由于仓库中的项目
SSH
下载链接都是采用如下方式的git@gitee.com:xxx/java-base-sample.git
-
但是如上方式的前缀在这种配置中无法验证,所以每次都要修改
SSH
的原链接域名为自定义Host
git@Cherlly.gitee.com:xxx/java-base-sample.git
-
-
如果是重新生成新的,或者更改别的账户,删除
.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