git多站点、多账号配置

网上一搜一堆单账号配置

当需要进行远程仓库账号区分时,例如gitee两个账号+github一个账号共存,则需要多站点、多账号配置,多数时候只需要单账号配置,故添加单账号部分。

1.单账号仓库配置

1.1准备材料

本次配置采用gitee作为远程仓库,需要准备一个gitee账号和gitee开源仓库

# gitee开源远程仓库
git@gitee.com:JerryCousin/testGitConfig.git
#邮箱注册的gitee账号
your@email.com

1.2生成SSH秘钥

公钥将用于远程仓库,私钥用于客户端

#进入ssh目录 C:\Users\admin\.ssh\
cd ~/.ssh
#根据gitee账号生成公、私密钥
ssh-keygen -t rsa -C "your@email.com"

接下来应该会看到下面的提示:

Generating public/private rsa key pair.Enter file in which to save the key 
  (/c/Users/your_user_name/.ssh/id_rsa):

直接回车(你可以输入不同的名字来便于识别文件, 比如生成 Gitee 的 ssh key 可以设置为 id_rsa_gitee,如果不输入名字直接回车,会生成名为 id_rsa 的文件)

接下来的会看到:

Enter passphrase (empty for no passphrase):

直接回车,然后会看到:

Enter same passphrase again:

继续回车就行了,然后会看到:

Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.
The key fingerprint is:
SHA256:F0K/ojCbFzgMPru11m4g/9uV03oHK+U0rKBLwOOye2c xxx@xxx.com
The key's randomart image is:
+---[RSA 2048]----+
|        .        |
|       . .       |
|  .     . o      |
| . + .   . o     |
|  o X . S o.     |
|  .+.O o.o o*    |
|  oo=o+. .+=.+   |
|   =++E. .oo+ .  |
|  ++.*=o. .o .   |
+----[SHA256]-----+

生成完毕,生成的文件在C:\Users\admin\.ssh\下

2.将公钥粘贴至git远程仓库添加SSH密钥

a)登录gitee,点击头像下拉菜单的设置SSH秘钥

b)填写标题:随意取名

c)填写公钥:将公钥id_rsa.pub文件中的文本复制到对应文本框

d)点击确认

e)验证是否成功

$ ssh -T git@gitee.com
The authenticity of host 'gitee.com (52.74.223.119)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes                   # 输入 yes
Warning: Permanently added 'github.com,52.74.223.119' (RSA) to the list of known hosts.
Hi tianqixin! You've successfully authenticated, but GitHub does not provide shell access. # 成功信息

1.2 git全局设置

设置全局用户

# 设置git提交标记的用户名或昵称,可以随意设置
git config --global user.name "jerry"
# 必须设置gitee账号的关联邮箱
git config --global user.email "your@email.com"

执行命令查看是否存在全局配置:

git config --global --list

测试拉取远程仓库

git clone git@gitee.com:JerryCousin/testGitConfig.git

2多账号、多站点配置

多账号多站点关键在于两点:

1、~/.ssh/config文件配置,不同Host别名指向各自的站点及秘钥

2、命令行中用config配置的Host别名替代HostName

具体方式参考如下

2.1 材料准备

和单账号仓库流程相似,需要生成email对应的秘钥

站点 账号 公私钥
gitee.com user1@qq.com u1_rsa、u1_rsa.pub
gitee.com user2@qq.com u2_rsa、u2_rsa.pub
github.com user1@qq.com u1_rsa、u1_rsa.pub(共用email,则秘钥可共用)

2.2本地设置

配置多账号多站点,需要用到~/.ssh/config文件,若没有,则新建,内容如下

在config文件中配置不同的Host别名,命令行中用Host替代HostName,可以实现多站点多账号使用场景

# ssh远程配置文件
 # Host : 别名(host和hostName均可匹配ssh命令,host匹配优先)
 # HostName : 主机名(ip或域名)
 # port : 默认即为22,不用写
 # User : 设置默认用户名,等同于命令行中`User@`,可被命令行user@覆盖,实例见下example3
 # PreferredAuthentications 强制使用Public Key验证
 # IdentityFile : 指明上面User对应的identityFile路径
 # IdentitiesOnly 	只接受SSH key 登录
 
#######################	示例如下	#####################################

# example1
########## (测试连通性命令,复制后shell)ssh -T git@github.com ##########
# Host github.com
# HostName github.com
# PreferredAuthentications publickey
# IdentityFile C:\Users\admin\.ssh\u1_rsa

# example2
########## (测试连通性命令,复制后shell)ssh -T git@gitee1	########
# Host gitee1
# HostName gitee.com
# PreferredAuthentications publickey
# IdentityFile C:\Users\admin\.ssh\id_rsa_a

# example3
########## (测试连通性命令,复制后shell)ssh -T aa.gitee.com ##########
# Host aa.gitee.com
# HostName gitee.com
# User git (命令行可不写git@host,直接写host别名,示例见上面测试连通性命令)
# PreferredAuthentications publickey
# IdentityFile C:\Users\admin\.ssh\id_rsa_b

########################################################################

# gitee		user1@qq.com
#### 命令行中用u1.gitee.com替代gitee.com	######
####git clone git@u1.gitee.com:JerryCousin/testGitConfig.git ######
Host u1.gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile C:\Users\admin\.ssh\u1_rsa

# gitee		user2@qq.com
#### 命令行中用u2.gitee.com替代gitee.com	######
#### git clone git@u2.gitee.com:JerryCousin/testGitConfig.git ######
Host u2.gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile C:\Users\admin\.ssh\u2_rsa

# github		user1@qq.com
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile C:\Users\admin\.ssh\u1_rsa

2.3 git本地仓库配置

git 的配置分为三级别,System —> Global —>Local。System 即系统级别一般(user默认为主机用户名admin),Global 为配置的全局,Local 为仓库级别,生效优先级是 Local > Global > System

以gitee.com user1@qq.com为例进行配置拉取git@gitee.com:JerryCousin/testGitConfig.git仓库代码

#### 命令行中用u1.gitee.com替代gitee.com,配置config中的设置	######
git clone git@u1.gitee.com:JerryCousin/testGitConfig.git

#### 或直接拉取,匹配默认的id_ra秘钥,id	######
git clone git@gitee.com:JerryCousin/testGitConfig.git

在Local 仓库级别下(.git同级目录下)设置单个项目的用户

cd testGitConfig
git config --local user.name  "tony"
git config --local user.email "user1@qq.com"

在项目下修改项目代码后提交,查看提交的信息即可验证

若担心混淆,不想保留全局用户,则unset清除global全局用户

git config --global --unset user.name
git config --global --unset user.email
posted @ 2021-05-27 16:13  RoarInWind  阅读(235)  评论(0编辑  收藏  举报