2017-04-26 122 views
0

其他細節:Gitlab無法克隆服務器上,但可以在客戶端克隆

  • 項目被添加到authorized_keys的私人
  • 服務器用戶SSH密鑰和SSH也加入到用戶的gitlab SSH設置

我有一個Ubuntu 16.04服務器,其中安裝了git和gitlab。我設法設置並運行它。我甚至設法在我的客戶端機器(Windows)上執行正常的git操作。但是,當我嘗試從服務器上的服務器的/ var/www/html目錄中克隆(git clone [email protected]:root/project.git)repo時,它顯示此錯誤:

致命:'root /project.git'似乎不是git存儲庫 fatal:無法從遠程存儲庫讀取。

請確保您擁有正確的訪問權限 並存在存儲庫。

注:我已經克隆了這個相同的項目,我的客戶端機器,它工作正常

更新:我能夠克隆一個回購協議,但通過HTTP

沒有任何人有任何想法如何解決這個問題?謝謝

+0

你比較過你使用的各種git軟件包的版本嗎?另外,你是如何創建'project.git'文件的?是從Windows複製的,還是由服務器上的本地git創建的?你可以創建一個本地回購和克隆嗎? –

+0

1. project.git文件是由gitlab創建的 2.是的項目是在Windows上創建的,並推送到服務器 3.我甚至無法推到創建的倉庫 對這個git的東西感到抱歉 –

+0

你能不能請提供'/ var/www'的權限? – pentix

回答

1

問題不Git的,但在Ubuntu

您permssions

Update: I was able to clone a repo but via HTTP

你去那裏。 gitlab服務器應該通過HTTP(S)訪問,因爲通常情況下,您不會從位於同一臺計算機上的存儲庫進行克隆。

爲防止其他用戶或應用程序訪問/操作存儲庫中的數據,只有gitlab服務器才能訪問其文件。

儘管不推薦這樣做(因爲它違背了linux的權限原則,每個服務器都有自己的用戶帳戶),但您仍然可以爲自己授予權限。

變體1(少侵入性) 要麼自己添加到組中的gitlab服務器運行

sudo usermod -a -G gitlab paul 

在其下,並確保所有者組並至少對目錄讀取權限

sudo chown g+r /var/www/path/to/the/repo 

和文件(更新)

sudo chown -R g+r /var/www/path/to/the/repo 

變2(髒,簡單的黑客)

如果你能確保沒有其他人與你的計算機上的帳戶要訪問gitlab(私人)庫,你可以給每個人讀的權限:

sudo chown o+r /var/www/path/to/repo 

操作系統將允許您訪問該文件夾,git將能夠從本地路徑克隆。

然而,按照他們的想法使用系統是一個很好的做法。如果使用本地路徑克隆,gitlab不會注意到這一點,例如,不會調整統計信息或運行Web掛鉤。

+0

「gitlab服務器應該通過HTTP(S)訪問,因爲通常情況下,您不會從位於同一臺計算機上的存儲庫進行克隆。」 - 謝謝你在這方面給我啓迪。現在對我來說這一切都很有意義。我嘗試了變體1:並將自己添加到git組(還沒有gitlab組)仍然是相同的結果 –

+0

沒問題,是的,也許你知道gitlab提供了存儲庫託管(就像GitHub,Bitbucket等)在使用他們的服務和你所做的事情之間是你想要代碼託管你自己的服務器,通常你不直接在你的服務器上工作,而是在其他計算機上克隆它。我可以問你更新你的問題,並插入'ls -l/var/www/path/to/repo'的輸出,這樣我就可以看到權限了嗎? – pentix

+0

我忘了提及你應該在該目錄中的所有文件上設置權限,而不僅僅是在目錄本身上。請看我更新的答案。 – pentix

0

這是關於身份驗證:如果服務器上的用戶(做克隆)沒有正確驗證GitLab(通過用戶名/密碼或SSH密鑰),它將無權訪問回購和你會得到一般的錯誤信息。

檢查與GitLab項目關聯的權限級別:除非聲明爲public(不需要驗證),否則需要將服務器用戶添加到項目成員列表中。

另一個解決方法是直接克隆存儲在GitLab服務器上的裸回購(在/home/git/repositories/ by default中),因爲您在GitLab服務器上。