概述
在同一台电脑上针对不同平台(如:gitee、github、gitlab)同时使用多个Git账户
配置
1.生成公钥
# 1.创建公钥
ssh-keygen -t ed25519 -C "xxx"
# Enter file in which to save the key:设置文件名(即公钥文件的名称)直接回车则为默认名称
# Enter passphrase (empty for no passphrase):设置密码,也可以直接回车
# Enter same passphrase again:再次确认密码
# 最终生成私钥和公钥(pub结尾),如:id_ed25519,id_ed25519.pub
# 2.在平台中添加公钥(pub结尾的文件内容)
# 3.测试是否添加成功
ssh -T git@gitee.com
说明
- -t 指定密钥类型
- -C 指定注释(密钥文件中可见,说明该公钥的用途或来源,如:邮箱)
- 如果设置了密码,进行push操作时就需要输入密码
拓展
密钥类型:
- ssh key的类型有四种,分别是dsa、rsa、 ecdsa、ed25519
- 根据数学特性,这四种类型又可以分为两大类,dsa/rsa是一类,ecdsa/ed25519是一类,后者算法更先进
- dsa因为安全问题,已不再使用
- ecdsa因为政治原因和技术原因,也不推荐使用
- rsa是目前兼容性最好的,应用最广泛的key类型,在用ssh-keygen工具生成key的时候,默认使用的也是这种类型。不过在生成key时,如果指定的key size太小的话,也是有安全问题的,推荐key size是3072或更大
- ed25519是目前最安全、加解密速度最快的key类型,由于其数学特性,它的key的长度比rsa小很多,优先推荐使用。它目前唯一的问题就是兼容性,即在旧版本的ssh工具集中可能无法使用。不过据我目前测试,还没有发现此类问题
- 如果可以的话,优先选择ed25519,否则选择rsa
2.多公钥配置
配置公钥
同上,不同之处在于对于两个不同的公钥指定不同的名称
生成配置文件
注意,config文件所在位置:C:\Users\xxx.ssh目录
touch config # linux命令, 生成文件config
config内容
# git server one
# 一般来说, clone项目都是直接复制地址,所以最好"别名"和"域名"保持一致
Host one.gitee.com # 别名
Hostname gitee.com # 真实域名
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_one # ssh文件路径, 如:id_rsa_one
User one # 用户名
# git server two
Host two.gitlab.com
Hostname gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_two
User two
说明
- 别名:“git@one.gitee.com:xxx.git” 中"@“与”:"中间的部分
- 真实域名:如果是公司内部仓库一般没有域名,此处配置公司内网IP