背景介绍:
公司项目使用gitlab作为代码仓库,使用jenkins作为自动化部署工具,其中两个项目需要使用两个不同的账号去gitlab上拉取代码,这两个账号都使用ssh key认证方式,这两个项目都部署在同一个机器上,该机器上只有一个密钥对,由于gitlab不同账号不能绑定相同的rsa公钥,导致其中一个项目无法正常拉取代码。
项目a的git仓库地址:ssh://git@git.abc.net/app1.git
项目b的git仓库地址:ssh://git@git.abc.net/app2.git
配置方法
1、生产新的密钥对,不同账号使用不同的密钥
cd ~/.ssh
ssh-keygen -t rsa
假设两个私钥的名称为id_rsa1和id_rsa2
2、在 ~/.ssh 目录下创建config文件,并且配置ssh key的路由策略
touch config
添加以下内容
Host gita@git.abc.net
HostName git@git.abc.net
User a
IdentityFile ~/.ssh/id_rsa1
Host gitb@git.abc.net
HostName git@git.abc.net
User b
IdentityFile ~/.ssh/id_rsa2
3、在gitlab上为两个账号绑定不同的公钥,注意公钥和私钥要对应上
4、修改jenkins构建脚本中的git仓库地址
修改后项目a的git仓库地址:ssh://gita@git.abc.net/app1.git
修改后项目b的git仓库地址:ssh://gitb@git.abc.net/app2.git
5、在jenkins中构建两个项目,如果都能正常拉取代码则说明配置成功