GitLab 配置服务器 SSH 权限
背景
公司的项目使用 GitLab 管理远程 Git 库,为了实现 CI\CD 需要在服务器上对 Git 库进行 clone、pull 甚至是 push 操作,公司 GitLab 通过 SSH 的方式实现认证,就需要把服务器的 SSH 公钥配置到 GitLab 中,实践过程中遇到的一些坑在这分享一下
配置方法
第一步:找到配置
找到工程配置里的 Deploy Keys 配置项,展开
第二步:尝试录入
尝试录入你服务器的 SSH 公钥
查询服务器默认使用的 SSH 公私钥的方法:
cat ~/.ssh/id_rsa.pub
如果第二步成功,恭喜你,配置成功了!可以尝试在服务器上 clone 你的 Git 库了
如果第二步失败,提示已经被录入过了(如下图),尝试第三步
第三步:尝试使用其他 Git 库已录入的 SSH 公钥
在 Privately accessible deploy keys 里找下找下有没有你需要的服务器,这里会显示其他你有权限的 Git 库曾经配置过的服务器 SSH 公钥
如果第三步找到了,Enable 一下就好了,恭喜你,配置成功了!可以尝试在服务器上 clone 你的 Git 库了
如果第三步没有找到,可能是由于在其他你没有权限的 Git 库中使用了这个 SSH 公钥,如果无法协调管理员开通权限的话,可以尝试第四步(最终解决方案)
第四步:生成一对新的 SSH 公私钥对并录入
在服务器上生成一对新的 SSH 公私钥对,注意不要覆盖之前的
生成新的 SSH 公私钥对的命令:
ssh-keygen -t rsa -C # 选择生成路径时可以用 /xxx/.ssh/id_rsa2 防止覆盖默认的公私钥对
将新生成的 SSH 公钥录入到 GitLab 中,由于是新生成的,肯定之前没有录入过
在服务器上使用新生成的 SSH 公私钥的方法:
#! /bin/bash
ssh-agent bash -c "ssh-add ~/.ssh/id_rsa2 && git clone ${gitrepo_url}"