【錯誤記錄】git 推送失敗:You are not allowed to push code to this project

0. 問題的來源

在完成了項目的開發以後,在把項目推送到 gitlab 倉庫時,出現瞭如下錯誤提示:git

clipboard.png

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

1. 問題追蹤過程

1.1 查看項目角色

第一步,由於這個項目不是本身平常維護的,就去查看下本身的角色。 看下是否是從新分配了權限。shell

結果發現本身是:master 角色服務器

1.2 想着是 sourceTree 工具的配置問題

命令行模式下使用 git push 推送,結果是:一樣的報錯信息ssh

那麼就證實確實是本身角色不對了,可明明本身是 mastertcp

1.3 確認本身的推送用戶

我自己用的是 ssh + id_rsa 提交的

網上搜索到一個命令工具

# 查看推送的用戶
 ssh -T git@git.workec.com

發現 : 顯示的是另一個同事A(吳大神)的名字
發現 : 顯示的是另一個同事A(吳大神)的名字
發現 : 顯示的是另一個同事A(吳大神)的名字gitlab

作過一次測試, 項目中添加A,那麼我就能夠正常推送。
因此我在推送的時候,使用的是同事A的帳號無疑了

下面就想着,爲何是同事A呢?如何修改過來呢?測試

因此我就去查看了相關全部的本地配置文件 ,git 配置,gitlab 對應的密鑰,都是我本人無疑。this

1.4 從新生成密鑰

# step 1 :清空上次的密鑰
ssh-keygen -R git.workec.com
# 或者使用下面的命令
ssh-keygen -p

# step 2: 生成密鑰文件
ssh-keygen -t rsa -C "youremail@xxx.com"

生成的密鑰和公鑰文件,分別是 id_rsaid_rsa.pub
同時把公鑰添加了項目的本身的ssh key

clipboard.png

這個時候,使用 ssh 測試一下

# 查看推送的用戶
 ssh -T git@git.workec.com

會提示

clipboard.png

而後會在 本地config下的 known_hosts 添加一條記錄

clipboard.png

可是這個時候提示的:仍是同事A。(我都已經從新生成了個人密鑰和公鑰,gitlab 服務器返回仍是同事Ade名字)

因此我就在想必定是個人公鑰發送給服務器的時候,是否是和同事A的同樣,讓服務器覺得當我發出這個請求時,其實是他作出的請求。

。。。。。。

(中間經歷了不少嘗試,查看同事B的配置,換帳號,這中間多虧了多個小夥伴的幫忙,你們都很好奇的圍觀和給與意見)

1.5 最後發現

屢次嘗試失敗,同事A根據時間,出錯的時間想了下他在那個節點作的事情,是在他的 gitlab 上 添加了一個 xxweb 的公共密鑰。
他刪除以後,我這邊嘗試成功。

我查看了下個人配置

clipboard.png

裏面有一個公共的配置,他添加的就是那個公共配置的密鑰

1.6 問題猜想

覺得 .ssh/config 目錄下,有多個密鑰文件,且沒有默認的密鑰。
因此在和服務器 ssh 認證鏈接時候,他會從上向下遍歷整個文件夾。
當訪問到 xxxweb 的時候,查看到密鑰庫,有同事A的記錄,就返回同事A的認證成功。

PS: xxxweb 是登陸公司開發環境服務器的一個公共密鑰

1.7 最後的問題

  1. 一個 gitlab 二個帳號,切換帳號登陸。

    難道只有在項目下配置默認的用戶

    clipboard.png

  2. 使用 tcpdump wireshark 抓包沒有抓到有用的數據,最終放棄(很不甘心)
相關文章
相關標籤/搜索