2012-06-01 41 views
4

我已經設法在我的NAS上初始化一個空的git回購,我試圖通過生成一個新的公鑰「foo.pub」並將其粘貼到keydir /並將它提交併推送到其上來添加一個新用戶NAS。Gitolite:添加用戶不工作,並以root身份克隆時被fallthru拒絕?

首先,文件:

這裏是我的〜/ .ssh/config文件:

Host root 
    HostName iptonas 
    User root 
    Port 123   

Host foo 
    HostName iptonas 
    User foo 
    Port 123 
    identityfile ~/.ssh/foo 

抓起gitolite管理員的副本從NAS:

git clone ssh://root/gitolite-admin 

我得到:

Cloning into 'gitolite-admin'... 
remote: Counting objects: 12, done. 
remote: Compressing objects: 100% (9/9), done. 
remote: Total 12 (delta 1), reused 0 (delta 0) 
Receiving objects: 100% (12/12), done. 
Resolving deltas: 100% (1/1), done. 

這裏是我的gitolite.conf文件:

repo gitolite-admin 
    RW+  = git 

repo testing 
    RW+  = @all 

repo newrepo 
    RW+  = foo 
    RW+  = bar 

當我用我的推gitolite管理員的副本:

git push root:gitolite-admin 

我得到:

Counting objects: 10, done. 
Delta compression using up to 8 threads. 
Compressing objects: 100% (5/5), done. 
Writing objects: 100% (6/6), 1.02 KiB, done. 
Total 6 (delta 0), reused 0 (delta 0) 
remote: Initialized empty Git repository in /root/repositories/newrepo.git/ 
To root:gitolite-admin 
    897113c..e7e2daf master -> master 

現在,當我嘗試推入新的回購

當我嘗試運行時:

git clone foo:newrepo 

我得到:

Cloning into 'newrepo'... 
[email protected]'s password: 
fatal: 'newrepo' does not appear to be a git repository 
fatal: The remote end hung up unexpectedly 

當我嘗試運行:

git clone root:newrepo 

我得到:

Cloning into 'newrepo'... 
FATAL: R any newrepo git DENIED by fallthru 
(or you mis-spelled the reponame) 
fatal: The remote end hung up unexpectedly 

我不知道我在做什麼錯誤?

我以下說明: http://www.nineproductions.com/linux/53-gitolite-hosting.html 在「添加庫和用戶的」

回答

10

這些指示提到​​有具有安裝Gitolite時使用的id_rsa.pub密鑰的用戶克隆。

所以,您的帳戶必須在其~/.ssh宣佈「git」用戶(這是唯一一個能夠克隆gitolite-admin回購)時使用gitolite的id_rsaid_rsa.pub鍵。

現在,添加一個用戶,你不僅要聲明說,用戶在gitolite.conf文件(你沒有),你也有他的公鑰添加到本地gitolite-admin回購「keys」目錄。

  • I ask Steve Franko to generate a new public/private key pair using 」 ssh-keygen -t dsa
  • I ask Steve Franko to send me the PUBLIC key he just generated
  • I rename the public key from id_dsa.pub to sfranko.pub
  • I copy the sfranko.pub key into the gitolite-admin/keydir directory

如果兩者都做這些業務的推背gitolite-admin前,然後Gitolite將宣佈新的用戶,你的git clone foo:newrepo會工作。

請注意,如果你做了Gitolite安裝與git帳戶作爲我之前推薦的,你應該在你的配置文件:

Host git 
    HostName iptonas 
    User git 
    Port 123 
    Identityfile ~/.ssh/git 

而且走git clone git:gitolite-admin

您應該看到/使用root的唯一時間是在服務器端的安裝開始,以聲明/添加git帳戶。
之後,我真的建議你不要在你的過程的任何地方使用/看到root


Actually I did generate two key sets, so my ~/.ssh folder currently has: id_rsa , id_rsa.pub , id_foo , id_foo.pub

~/.ssh夾應包含:

gitgit.pubid_fooid_foo.pub

Gitolite立足於公鑰的名稱後進行認證的授權機制。

還是那句話:在服務器端,你必須做gitolite安裝像「混帳」用戶,以作爲參數/tmp/git.pub(不/tmp/id_rsa.pub


讓我們回顧一下,因爲這裏存在很大的混亂。 Gitolite基於ssh
這意味着在服務器端(這將是您的Gitolite服務器)需要一個帳戶(這裏是'git'),其中~git/.ssh/authorized_keys文件將記錄所有Gitolite管理員/用戶公鑰。

在客戶端(用戶foo),您需要(至少對於您的第一個用戶)使用git的公鑰和私鑰,以及來自foo的公鑰和私鑰。

~foo/.ssh/config文件將包含:

Host gitadmin 
    HostName iptonas 
    User git 
    Port 123   
    identityfile ~/.ssh/git 

Host foo 
    HostName iptonas 
    User git 
    Port 123 
    identityfile ~/.ssh/foo 

注意,對於用戶的任何SSH通信總是Git的!您總是通過像ssh://[email protected]:123/arepo這樣的ssh地址聯繫Gitolite服務器。
除,因爲喲有多個SSH密鑰選擇從,你可以改爲鍵入:

  • git clone gitadmin:gitolite-admin,或
  • git clone foo:newRepo

的第一個命令將允許你克隆gitolite-admin回購(因爲你使用git public和private ssh密鑰來做到這一點,所以你有權這樣做)。
您可以使用該本地克隆將foo.pub放入keys目錄中,並在config文件中聲明newRepo
然後你推回該回購(和Gitolite發揮它的魔力,創建一個新的回購,爲您添加foo.pub~git/.ssh/authorized_keys的內容,帶有強制命令腳本以攔截由foo發出的任何ssh命令)。

(我喜歡的命名,而不是混帳了SSH快捷方式「gitadmin」,即使公/私鑰被命名爲「git.xxx」,因爲「gitadmin」更好的傳達了SSH的意圖命令,你會用它做什麼:您將管理git訪問權限)

第二個命令允許您複製您的newRepo並對其進行處理。

需要注意的是:

  • ssh gitadmin,或
  • ssh foo

將顯示gitolite版本,並與每個SSH捷徑 'gitadmin' 和'foo使用SSH密鑰關聯的權限',如~foo/.ssh/config文件中所定義。

+0

嗨再次:)非常感謝你幫助我。其實我確實生成了兩個密鑰集,所以我的〜/ .ssh文件夾目前有:id_rsa,id_rsa.pub,id_foo,id_foo.pub。在我的gitolite-admin/keydir目錄中有:git.pub,foo.pub。按照您的建議,我也將git用戶添加到我的配置文件中。然而,當我運行「git clone git:gitolite-admin」時,我得到「克隆到'gitolite-admin'中... git @ iptonas的密碼: 權限被拒絕,請重試。幾次直到失敗。 – Jay

+0

我是否應該爲git製作keysets,還要添加「identityfile〜/ .ssh/git」來配置? – Jay

+0

@Jay:回答編輯 – VonC

相關問題