2021-05-08
一台电脑 配置多个GitHub账号
假设配置的两个GitHub账号分别为remmeiko和Mikasa
操作环境:Windows
0x01.生成密钥
每一个GitHub账号可以有多个ssh key,但是一个ssh key只能用于一个GitHub账号,所以需要为每个GitHub账号生成对应的ssh key
1.生成第一个账号rem的密钥
1 | ssh-keygen -t rsa -C “邮箱1” |
此处虽然没有加-f参数,但执行时自动选择路径并命名(会向你确认一下路径)
- 执行完后会在【C:\Users\用户\ .ssh】路径生成id_rsa(密钥)和id_rsa.pub(公钥)两个文件
2.生成第二个账号rem2的密钥
第二个账号一定要重新命名,不然会覆盖掉第一个账号生成的密钥文件,使用-f参数指定文件名字
1 | ssh-keygen -t rsa -f "C:\Users\用户\.ssh/rsa_2" -C “邮箱2” |
- 执行完会生成id_rsa_2(密钥)和id_rsa_2.pub(公钥)两个文件
ssh-keygen命令参数说明
- -t(type):指定要生成的密钥类型,有rsa1(SSH1),dsa(SSH2),ecdsa(SSH2),rsa(SSH2)等类型,较为常用的是rsa类型
- -C comment:提供一个新的注释
- -b bits:指定要生成的密钥长度 (单位:bit),对于RSA类型的密钥,最小长度768bits,默认长度为2048bits。DSA密钥必须是1024bits
- -f filename:指定生成的密钥文件名字
0x02 将密钥添加至对应的GitHub账号
登录GitHub账号,找到在头像下方setting
其他如下图操作即可(从左至右)
0x03 编辑配置文件
- 先确认.ssh文件夹中是否存在config文件,没有则创建一个(无文件后缀)
- 编辑如下内容
1 | # Host:主机别名 |
Host修改自己能够识别的名称即可
HostName设置为github.com和ssd.github.com都可以
IdentityFile为密钥所在的路径(注意寻找自己密钥所在的路径)
ps:如果实在找不到密钥所在路径,推荐下载everything软件查找
上述操作成功之后就可以测试是否配置成功了
- 终端输入以下命令
1
2ssh -T git@github_remmeiko
ssh -T git@github_Mikasa说明以下git@github_rememiko:git是config配置中的User用户名,@后面的github_rememiko是config配置中的HostName名字
- 显示以下内容则表示配置成功了
1
Hi rem! You've successfully authenticated, but GitHub does not provide bash access.
0x04 使用ssh-agent管理密钥
Windwos上使用ssh-agent需要先开启对应的服务
在服务中找到OpenSSH Authentication Agent打开
1 | ssh-add C:/Users/用户名/.ssh/id_rsa |
关于ssh-agent详情可参考:ssh转发代理:ssh-agent用法详解
0x05 配置仓库设置
1.删除全局配置
1 | git config --global --unset 'user.name' |
2.设置本地配置
1 | git config user.name `用户名` |
0x06 本地仓库关联远程仓库
1 | # 记住要到对应的本地仓库路径下执行对应的命令 |
命令中后半段xxx/xxx.git就是下图中2标注的信息
0x07 补充说明
关于账号和邮箱的说明
- 我们一般接触的有两个地方的账号和邮箱,一个是git设置的账号邮箱,一个是GitHub账号对应的账号和邮箱
- 1)本地git设置账号和邮箱分为系统,全局和本地(local),全局和系统是不随git库改变的,但是也可以为每个仓库设置单独的账号和邮箱。这个账号和邮箱不是作为验证信息,是作为commit提交记录相关信息的标识。
系统配置是对这台电脑所有用户生效的
全局配置是对该用户登录下的所有GitHub仓库生效的
本地(local)配置:也就是为单独仓库进行的配置,只对该仓库生效
优先级逐渐增加,譬如全局配置的优先级要低于仓库配置,就是说如果仓库和全局都设置了账号和邮箱,那么实际生效是仓库配置设置的账号和邮箱。
- 2)每个GitHub账号在注册时都会有一个对应的账号和邮箱,这个是GitHub的基本信息,说标识也可以,如下图
前提说明:git设置的账号和邮箱下文将使用user.name和user.email代替
- 在本地git设置的user.name和uer.email作为commit记录时的一个标识,用来方便管理,可以清楚的知道是谁提交的。
- 当你的user.name和user.email和GitHub账号上的name\email一致,你提交修改时,github会自动将这两者关联起来,因此建议git设置的账号邮箱和GitHub账号邮箱一致,(随意填写也是可以的,但如果当两处的账号和邮箱不一致时,就无法进行统计,且头像变灰,而且你也可以改成其他人的账号和邮箱,记录就会显示是别人提交的)
0x08 本地电脑绑定gitee
这里绑定gitee就相当于添加第三个账号,整个过程是一样的,只是有些细节的不同而已
生成密钥
1
ssh-keygen -t rsa -f "C:\Users\31327\.ssh\gitee_id_rsa" -C "3132756780@qq.com"
将公钥添加至gitee账号之中,和0x02添加至GitHub账号是一样的
编辑配置文件
1
2
3
4
5# 3132756780@qq.com
Host gitee_RemMeiko
HostName gitee.com
User gitee
IdentityFile C:/Users/用户名/.ssh/gitee_id_rsa注意修改GitHub为gitee即可
添加至ssh-agent
1
ssh-add C:\Users\31327\.ssh\gitee_id_rsa
测试连接
1
ssh -T gitee@gitee_RemMeiko