2012-02-18 51 views
4

我使用this tutorial在我的服務器上安裝了gitolite。這屬於「非根」方法。gitolite:可以通過SSH連接,不能克隆

當我試圖將gitolite-admin克隆回我的客戶端時,它失敗。我得到這個錯誤信息:

git clone [email protected]:gitolite-admin 
Cloning into gitolite-admin... 
fatal: The remote end hung up unexpectedly 

另外:

git clone ssh://[email protected]:gitolite-admin 
Cloning into gitolite0admin... 
Using username "git-upload-pack 'gitolite". 
fatal: The remote end hung up unexpectedly 

我也試圖附加.git到回購名字的結束,我也嘗試添加repositories/gitolite-admin(在錯誤提示上面鏈接的教程)以及這兩者的組合並且都不起作用。我可以在谷歌上找到關於「使用用戶名」位的結果,這讓我很感興趣。

我可以通過SSH連接到機器,它告訴我,我有權訪問R和W gitolite-admin。那麼,SSH正在工作?

回答

7

查看SSH parts about gitolite:事實上,你可以通過ssh連接到server.com僅僅意味着:

  • 您的SSH密鑰註冊在[email protected]~/.ssh/authorized_keys
  • 該密鑰是不相關的gitolite「不存在「command=」選項,這意味着「不管傳入用戶要求做什麼,而是強制運行該命令」)。
    您處於交互式會話中,能夠執行任何您喜歡的命令。

我不喜歡所有關於第三方教程是什麼,它試圖使用相同名稱的git用戶和ssh非root用戶

你應該保持獨立

  • 非根用戶這不是一個帳戶,只是一個ssh密鑰,這將被鏈接到gitolite,具有管理員權限到t他gitolite-admin回購)
  • 託管帳戶,這應該是 'git',不gitolite,正是爲了避免兩種使用模式之間的困惑:在server.com,沒有SSH
    • git日誌上直接這裏):執行git的命令(如克隆服務器的gitolite回購,並執行gitolite/src/gl-system-install)所需的交互會話
    • ssh [email protected]將使用你的公共區域~/.ssh/id_rsa(.pub) IC和私鑰,其中,作爲gitolite的那些,將授權你克隆gitolite-admin回購和推回該回購

還是那句話:
「gitolite」是不是一個真正的帳戶,只有被授權在server.com上執行命令的名稱爲'git'(實際的「託管帳戶」,如「託管git服務和回購」)。
所有其他的git用戶也將在server.com上執行git命令作爲git
並且該特定用戶(gitolite)將被鏈接通過forced-command mechanism的gitolite安裝過程中,以授予該「用戶」的權利來克隆,修改和推回gitolite-admin回購到gitolite授權層,使用權限的設置。
(這是它唯一的特殊性,相比於其他所有SSH git的用戶,您將添加:他們將無法訪問特定的git回購這是gitolite-admin之一)

試圖命名兩個具有相同名稱只是要求麻煩。

我不喜歡使用默認命名約定的公共/私有密鑰,所以我更喜歡客戶端定義與預期用戶的名稱這些鍵上:

~/.ssh/gitolite.pub 
~/.ssh/gitolite 

然後我定義了配置文件:~/.ssh/config在它:

host gitolite 
    user git 
    hostname server.com 
    identityfile ~/.ssh/gitolite 

(這裏要注意的用戶:總是git
然後我可以複製我的gitolite-amin回購:

git clone gitolite:gitolite-admin 
# modify locally 
# git add -A ; git commit -m "my modifs" 
git push origin master 
+0

我正在使用的服務器沒有任何用戶使用密鑰對授權進行登錄,因此我使用的密鑰尚未添加到任何人的〜/ .ssh/authorized_keys中。現在,我添加到服務器gitolite中的用戶,如'useradd gitolite',確實有一個〜/ .ssh/authorized_keys,在那個文件中,我找到了我的公鑰,我的gitolite用戶名(steve),還有一個命令部分。此外,使用gitolite用戶連接到我的服務器不是一個交互式會話。它告訴我什麼是可用的回購,然後立即註銷。 – steve 2012-02-18 18:11:45

+0

@steve:那麼看起來不錯。你可以嘗試在客戶端定義一個〜/ .ssh/config文件,並嘗試使用'git clone gitolite:gitolite-admin'? (只是'用戶gitolite'替換用戶的Git,儘管我仍然覺得不安考慮'gitolite'作爲一個帳戶) – VonC 2012-02-18 18:48:26

+0

OK - 這裏的線從我的〜/ .ssh/config中 主機server.com \t用戶gitolite \t主機名server.com \t PreferredAuthentications公鑰 \t IdentityFile「C:\用戶\用戶名\的.ssh \ id_rsa」 < - 這個鍵對應服務器上的公共密鑰,即使它有一個不同的名稱。 我不完全確定你的意思是'git clone gitolite:gitolite-admin',但是我運行它並且我得到了主機不存在,無法打開連接。 那麼,我從上面運行相同的命令,我仍然得到相同的錯誤。 – steve 2012-02-19 18:41:13

1

對於後人,修復方法是確保GIT_SSH是而不是設置爲TortoisePlink.exe。 Git不能使用它。