在完成了项目的开发以后,在把项目推送到 gitlab
仓库时,出现了如下错误提示:git
GitLab: You are not allowed to push code to this project.
fatal: Could not read from remote repository.Please make sure you have the correct access rights
and the repository exists.web
第一步,由于这个项目不是本身平常维护的,就去查看下本身的角色。 看下是否是从新分配了权限。shell
结果发现本身是:master 角色服务器
sourceTree
工具的配置问题命令行模式下使用 git push
推送,结果是:一样的报错信息ssh
那么就证实确实是本身角色不对了,可明明本身是 master
。tcp
我自己用的是ssh
+id_rsa
提交的
网上搜索到一个命令工具
# 查看推送的用户 ssh -T git@git.workec.com
发现 : 显示的是另一个同事A(吴大神)的名字
发现 : 显示的是另一个同事A(吴大神)的名字
发现 : 显示的是另一个同事A(吴大神)的名字gitlab
作过一次测试, 项目中添加A,那么我就能够正常推送。
因此我在推送的时候,使用的是同事A的帐号无疑了
下面就想着,为何是同事A呢?如何修改过来呢?测试
因此我就去查看了相关全部的本地配置文件 ,git 配置,gitlab 对应的密钥,都是我本人无疑。this
# step 1 :清空上次的密钥 ssh-keygen -R git.workec.com # 或者使用下面的命令 ssh-keygen -p # step 2: 生成密钥文件 ssh-keygen -t rsa -C "youremail@xxx.com"
生成的密钥和公钥文件,分别是 id_rsa
,id_rsa.pub
。
同时把公钥添加了项目的本身的ssh key
这个时候,使用 ssh 测试一下
# 查看推送的用户 ssh -T git@git.workec.com
会提示
而后会在 本地config下的 known_hosts 添加一条记录
可是这个时候提示的:仍是同事A。(我都已经从新生成了个人密钥和公钥,gitlab 服务器返回仍是同事Ade名字)
因此我就在想必定是个人公钥发送给服务器的时候,是否是和同事A的同样,让服务器觉得当我发出这个请求时,其实是他作出的请求。
。。。。。。
(中间经历了不少尝试,查看同事B的配置,换帐号,这中间多亏了多个小伙伴的帮忙,你们都很好奇的围观和给与意见)
屡次尝试失败,同事A根据时间,出错的时间想了下他在那个节点作的事情,是在他的gitlab
上 添加了一个 xxweb 的公共密钥。
他删除以后,我这边尝试成功。
我查看了下个人配置
里面有一个公共的配置,他添加的就是那个公共配置的密钥
觉得 .ssh/config 目录下,有多个密钥文件,且没有默认的密钥。
因此在和服务器 ssh 认证链接时候,他会从上向下遍历整个文件夹。
当访问到 xxxweb 的时候,查看到密钥库,有同事A的记录,就返回同事A的认证成功。
PS: xxxweb 是登陆公司开发环境服务器的一个公共密钥
难道只有在项目下配置默认的用户