配置流程
清空默认全局配置
git config --global --unset user.name
git config --global --unset user.email
为不同账户生成不同ssh-key
在 windows 账户下,/c/User/username/.ssh下 id_rsa 是默认的文件名称,我们现在需要生成不同的 ssh-key,所以需要设置不同的文件存储对应的公钥。这里我们做如下命名以进行区分:
ssh-keygen -t id_rsa_gerrit -C "[email protected]"
ssh-keygen -t id_rsa_github -C "[email protected]"
将ssh-key分别加入到信任列表
ssh-add id_rsa_github
ssh-add id_rsa_gerrit
添加公钥至git账户
把 id_rsa_xxx.pub 文件中的内容复制粘贴到 github 网站的ssh设置中即可
config文件中配置ssh-key
这一步非常重要,由于网络中充满了各种劣质博客,导致我在配置过程中多次因为这一步的格式问题导致无法正常应用,因此记录下成功的方案。
各个字段解读:
# 这里是自定义的host简称,以后连接远程服务器就可以用命令ssh myhost
Host
# 主机名可用ip也可以是域名(如:github.com或者bitbucket.org)
HostName
# 服务器open-ssh端口(默认:22,默认时一般不写此行)
Port
# 配置登录时用什么权限认证
# 可设为(publickey, password publickey, keyboard-interactive 等)
PreferredAuthentications
# 证书文件路径(如~/.ssh/id_rsa_*)
IdentityFile
# 云端仓库登录用户名
User
测试
1.测试连通性
ssh -T [email protected]
出现上图 即表示配置已生效。
2.global和local要注意
2.1 global配置
这个级别的配置适用于当前用户的所有git仓库,信息存储在用户的全局配置文件中
2.2 local配置
此级别的配置针对特定Git仓库,可以在clone下来的仓库目录下进行本地化配置。权限为仅对当前仓库生效。
在不同的代码仓库进行代码提交的时候,记得要检查用户名和邮箱,以免混淆。在从自己仓库clone下来的代码文件夹中要进行 local 本地化配置。否则将会走 global 全局的配置。
git config --local user.name xxx
git config --local user.email [email protected]
这样就基本解决了 一台机器多git账户的配置环境错乱的问题。
参考资料
- https://www.cnblogs.com/fole-del/p/17474107.html
- https://zhuanlan.zhihu.com/p/281094708
- https://blog.csdn.net/fredricen/article/details/106550799?ydreferer=aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS5oay8%3D
- https://www.cnblogs.com/cangqinglang/p/12462272.html
- https://juejin.cn/post/6999630383130083358