当前位置: > 其它学习 > Git >

Gitlab添加SSH key可以pull不能push的问题

时间:2019-02-01 16:02来源:未知 作者:IT
GitLab: Deploy keys are not allowed to push code.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

如果你push的时候遇到这个提示,那么恭喜你,你遇到gitlab最坑逼的圈套了。

故事是这样的,有一天你老老实实的用git bash(对,你得用git bash要不很有可能就不行了,别信官方说用Windows的cmd肯定能行的话,这个坑是小,我都懒得说了)按照gitlab的文档在 .ssh下生成了id_rsa和id_ras.pub。

在.ssh目录下敲了下面的命令并熟练的点了3下回车生成SSH Key

ssh-keygen -t rsa -C "name@xxxx.com"
 
comm.png

在ssh目录下出现了两个新文件

 
cmm.png

然后你兴高采烈的就 cat id_rsa.pub | clip 去复制了公钥贴到项目的SSH配置处

 

 
ccc.png

点击了添加之后你觉得大功告成
然后你还验证了一下 ssh -T gitxx@xxx.com
看起来还成功了呢
 
1490420868(1).png

 

然后你去pull了项目,好爽,它pull成功了,然后你心血来潮撸了几行代码就要push,然后你就被现实狠狠的打了一耳光 啪啪啪

 
1490420522(1).png

无情的提示了你这句话。。冷冰冰。

你一看,这特么不对啊,我百分之百生成的SSH添加进去的,怎么没有push权限,劳资被公司开除了???还提醒我用的是Deploy keys你真的不是来搞笑的么。。
然后你研究了半天,重新生成重新添加重新验证 ,周而复始反反复复,可以pull不能push。于是你懵逼了。

这个坑,我不知道有多少人踩过,反正踩的人都很蛋疼。

其实是这样的,gitlab有两个key这事可能你在反反复复的过程中应该已经知道了,一个是SSH一个是Deploy。SSH拥有push和pull的权限,而Deploy只能pull不能push。
没错,你生成的确实是SSH,讲道理你也应该可以push,但是千算万算你没算到gitlab有个坑。它可能觉得你懂它,所以它没告诉你。

在Gitlab里有两个添加SSH的地方,一个在项目里,一个在Gitlab主页个人资料设置的SSH密钥里。

下图就是主页那个密钥的位置

 
1490421364(1).png

跟在项目里的长的一样。嗯。。。

是的,你应该把SSH keys填在 Gitlab主页下的个人资料设置--SSH密钥里,在这里添加的才是SSH。在项目里添加的是Deploy 神奇么 嘤嘤嘤。

如果你之前在项目里添加过,请把项目里的删掉,要不它会提示你,ssh已存在之类的。SSH添加成功大概是这样的

 
 

然后你再去验证一下 ssh -T git@xxxx.com

 
 

这次在最后welcome的是你的名字

再PUSH一下


 

 


(责任编辑:IT)
------分隔线----------------------------