前言
- 本地开发环境中经常会碰到连接多个 Git 仓库的情况,比如使用 Github,Gitlab,Coding 等,也可能会碰到需要连接多个相同类型如 Gitlab 仓库等
- 如果使用默认 Git 配置,只能连接一个仓库切换到其他仓库每次 PR 都需要手动切换比较麻烦,下面给给出一种全局配置,对远程仓库类型透明,减少手动切换的麻烦
- 以 Windows 为例,其他操作系统类似
1.生成 ssh key
- 按照 Git 约定使用邮箱作用户,为每个需要连接的 Git 仓库生成 ssh key
- ssh key 常用算法有 RSA,ED25519等,这里以当下最常用的 RSA 为例:
ssh-keygen -t rsa -C "your_email@example.com"
- 按照提示,建议为每个 key 文件使用别名,便于维护区分
- 将生成的公钥配置到仓库的 ssh 秘钥中
2.配置多 git 账户
- 在 ./ssh 目录下创建 config 文件
- 为每一个 Git 仓库编辑连接信息,模板为:
Host 仓库别名
HostName 仓库域名
PreferredAuthentications 验证方式,默认为 publickey
IdentityFile 校验私钥文件名,按照如上建议使用别名便于区分
Host gitlab.xxx.com.cn
HostName gitlab.xxx.com.cn
PreferredAuthentications publickey
IdentityFile ./gitlab1_id_rsa
Host gitlab2.xxx.com.cn
HostName gitlab2.xxx.com.cn
PreferredAuthentications publickey
IdentityFile ./gitlab2_id_rsa
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ./gitee_id_rsa
3.验证连接
ssh -T git@仓库服务器域名
- 比如 Gitlab 连接成功后返回
Welcome to Gitlab, @xxx
4.主机验证
- config 文件目录下会生成 known_hosts 文件,将仓库已连通的 ip 地址和 公钥添加到已知主机列表中
HostName(对应 config 文件中的配置),ip 算法摘要名称 host-key
- 首次连接会由 Git 发出确认是否将服务器连接信息保存到本地操作系统,确认后会将主机 ip 和指纹添加到已知主机列表,后续连接可以确保用户连接到合法服务器,避免中间人攻击
- 如果仓库重装、迁移或定期更新公钥的话,就需要重新建立连接,删除已有主机信息:
ssh-keygen -R hostname or ip