最近在公司内网服务器上搭建了gitlab,已能正常运行,如下图:
现在有这样一个需求,之前我们使用的是外网gitlab管理代码,但是现在公司要求在内网搭建gitlab。而我外网已经有了一个账号,现在想在内网gitlab上面创建相同的账号,方便管理。但这会对我们使用ssh方式提交代码有影响。
思路
ssh 方式链接到 外网GitLab/内网GitLab,需要唯一的公钥,如果想在一台电脑绑定同一个帐号到不同网段的gitlab,需要两个条件:
- 能够生成两对私钥/公钥
- push 时,可以区分两个公钥,推送到相应的仓库
解决方案:
- 生成 私钥/公钥 时,密钥文件命名避免重复
- 设置不同 Host 对应不同 HostName ,对应的密钥也不同
1.全局配置
git config --global user.name "yangfeng"
git config --global user.email "104111413@qq.com"
2.原先已经使用命令生成了一对密钥(外网),现在生成另一对(内网):
ssh-keygen -t rsa -C "104111413@qq.com" -f /c/Users/Administrator/.ssh/id_rsa_work
如下图所示:
将id_rsa_work中的内容拷贝到内网gitlab ssh-key位置:
进入目录C:\Users\Administrator 选中.ssh目录右键gitbash执行:
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa_work
使用命令 ssh-add -l 查看添加的结果。ssh-add命令是把专用密钥添加到ssh-agent的高速缓存中。
vim ~/.ssh/config,输入下面的内容:
Host gitlab.com
RSAAuthentication yes
IdentityFile ~/.ssh/id_rsa
Host 192.168.2.183
HostName 192.168.2.183
PORT 822
RSAAuthentication yes
IdentityFile ~/.ssh/id_rsa_work
-
#Host myhost(这里是自定义的host简称,以后连接远程服务器就可以用命令ssh myhost)[注意下面有缩进]
-
#HostName 主机名可用ip也可以是域名(如:github.com或者bitbucket.org),这里的192.168.2.183就是公司内网gitlab地址
-
#Port 服务器open-ssh端口(默认:22,默认时一般不写此行)。但我是docker安装的gitlab,映射到主机的端口是822,不是22,所以这里以你自己gitlab安装后的端口为准。
-
#IdentityFile 证书文件路径(如~/.ssh/id_rsa_*)。
测试: