1. 问题描述
啊~ 修改gitlab本地文件权限导致不能push、pull!千古罪人,整个团队代码提交停滞0.5h,还好解决了
Connection reset by 192.xxx.xx.xx port 8222
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
GitLab: API is not accessible
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
GitLab: Failed to authorize your Git request: internal API unreachable
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
2. 问题起因
兴高采烈:公司先前使用SVN,但是因为新开一个项目,作为GIT的力挺者,同时也是项目负责人,项目也开始用起了gitlab来进行对代码的托管,代码的审查,版本控制用起来也是得心应手,贼舒服~ 大家都其乐融融。
小插曲:但是,手贱的鄙人,把gitlab根的文件夹下所有文件,直接赋予了-R 777
权限,一开始觉得有权限比没权限好,但出事故后,想要拉代码,却发现自己竟然could not read!!。。
过了十分钟,团队里的小弟们就发现了这个问题(毕竟刚reviewer完代码,我就开始手贱,小弟们也准备拉 开发分支的代码合并到自己的分支 T_T)
开始救火:接着就开始定位问题,解决问题
3. 问题解决
小结:gitlab有自己的权限控制,不能再未熟悉的情况下,随便更改!否则就需要折腾一下,还好折腾成功了~
自己维护的gitlab是由docker创建的,首先进入docker之后,第一步是查看错误日志,接着是根据错误日志来进行定位问题,修复问题,最后重启~
3.1 执行pull,并查看错误日志
# 方法1:查看实时的错误信息,例如执行pull,gitlab反馈的错误是什么
# 进入docker所在gitlab
docker exec -it CONTAINER_ID bash
gitlab-ctl tail
# 方法2:docker进入gitlab,连接到正在运行中的gitlab
docker attach CONTAINER_ID
3.2 对pub key设置低权限
find / -name ssh_host_rsa_key # 找到某个pub key
# 将当前的pub key进行逐一的降权 600
3.3 使用gitlab-ctl进行修复
gitlab-ctl reconfigure
估计第2步也是可以通过这个命令解决~
3.4 重启gitlab
gitlab-ctl restart
感慨
虽然目前的托管的服务机只是临时搭建的测试机子,再公司了解了GIT的好处后,也开始偏向GIT的使用,也准备加购超大服务器来作为正式的托管服务器;
但想想自己的操作,这种直接将根目录的 “完全放权” 真的挺危险~ 各位兄台还是把本文当做反面例子,虽然解决了,还得好好反思自己。