问题背景
工作使用的时候,使用公司的GitLab仓库,仓库域名为gitlab.biz.domain,员工账号为coder@biz.com;
维护个人项目的时候,使用GitHub仓库,仓库域名为github.com,个人账号为coder@163.com;
两个仓库都通过ssh-key验证,本地git提交代码时,可以根据需要,使用不同的key,提交至不同的仓库。
解决方案
本地生成两套 ssh-key,将 public key 分别添加至相应的仓库,通过配置文件 config,实现提交至不同域名仓库时,自动使用不同的 private key 进行身份验证。
实现步骤
1、生成两套 ssh-key 密钥对:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa.gitlab -C "coder@biz.com"
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa.github -C "coder@163.com"
-t :表示密钥类型
-b:指定密钥长度(默认2046)
-f:指定密钥文件名
-C:添加密钥注释
2、设置配置文件:
在~/.ssh目录下创建一个 config 文件,同时,修改文件操作权限:
touch ~/.ssh/config
chmod 600 ~/.ssh/config
修改 config 配置文件内容,如下:
Host gitlab.biz.domain
IdentityFile ~/.ssh/id_rsa.gitlab
Host github.com
IdentityFile ~/.ssh/id_rsa.github
此时,使用ssh登录时,将根据域名,选择不同的私钥进行鉴权验证。