2013-04-22 125 views
6

我在CentOS 5.9服務器上安裝gitolite。我已經創建了git用戶,然後su - git我已經設法將我的公鑰放入〜/ .ssh /目錄,我已經成功克隆了github的gitolite repo並運行了gitolite/install -ln。下一步是運行gitolite設置。gitolite setup致命:指紋失敗'/ tmp/Q3pnE4WVbu'

[email protected] [~]# gitolite setup -pk $HOME/.ssh/micha.pub 
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/ 
Initialized empty Git repository in /home/git/repositories/testing.git/ 
FATAL: fingerprinting failed for '/tmp/Q3pnE4WVbu' 

谷歌搜索,並在這裏SO搜索並沒有幫助我解決這個FATAL錯誤,而我現在阻礙。

我應該在運行安裝程序之前自定義gitolite.conf文件嗎?我一直在遵循http://gitolite.com/gitolite/progit.html的說明,因爲它們對於像我這樣的新手來說比一般的gitolite文檔要容易一些。但是,這些說明沒有提到自定義.conf文件。


UPDATE: 我試圖生成一個新的密鑰,它仍然失敗:

[email protected] [~]# ssh-keygen -t rsa -C "Gitolite Admin Access (not interactive)" -P "" 
Generating public/private rsa key pair. 
Enter file in which to save the key (/home/git/.ssh/id_rsa): /home/git/.ssh/micha 
/home/git/.ssh/micha already exists. 
Overwrite (y/n)? y 
Your identification has been saved in /home/git/.ssh/micha. 
Your public key has been saved in /home/git/.ssh/micha.pub. 
The key fingerprint is: 
33:b6:62:8b:b9:58:07:7a:71:6a:02:a5:ff:7e:c3:3a Gitolite Admin Access (not interactive) 
[email protected] [~]# gitolite setup -pk $HOME/.ssh/micha.pub 
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/ 
Initialized empty Git repository in /home/git/repositories/testing.git/ 
FATAL: fingerprinting failed for '/tmp/pUKqewb66w' 

我也曾嘗試用全路徑替換$HOME,以防萬一su - git混淆了它。我的ssh安裝有問題嗎?不知道如何使用ssh連接到此服務器。


UPDATE: 原來gitolite被保留我曾試圖建立與失敗以前的公共密鑰。然後,我刪除了所有repos,gitolite源目錄,〜/ bin和.gitolite目錄中的符號鏈接,然後再次開始安裝過程。我克隆了github的gitolite repo,刪除了之前我嘗試使用的所有其他密鑰後生成了一個新密鑰。然後我跑gitolite install -ln,最後

[email protected] [~]# gitolite setup -pk $HOME/admin.pub 
Initialized empty Git repository in /home/git/repositories/gitolite-admin.git/ 
Initialized empty Git repository in /home/git/repositories/testing.git/ 
FATAL: fingerprinting failed for '/tmp/tsIx4cKWHj' 

仍然失敗。

回答

1

由於我是mentioned before,這意味着ssh密鑰沒有正確生成。

嘗試:

ssh-keygen -t rsa -f "${H}/.ssh/micha" -C "Gitolite Admin access (not interactive)" -q -P "" 

OP mwottonreports清除從任何現有ssh密鑰的的〜/ .ssh是溶液。
這是因爲ssh-authkeys.fp_file()函數被調用with a find

chomp(my @pubkeys = `find keydir/ -type f -name "*.pub" | sort`); 

因此,它可以抓住已經是在~/.ssh以前(可能損壞)鍵。

+0

如果我在服務器上運行它,這將生成一對。然後我需要將私鑰傳輸到我的工作站。有沒有辦法告訴我的本地git客戶端使用該密鑰文件只是爲了這個遠程? – mwotton 2013-04-23 02:54:18

+0

我的確看到了早先的答案,但是由於它已經初始化了回購協議,我認爲關鍵一定是可以的。在之前的嘗試中,即使在repos被引用之前,它仍然因指紋錯誤而失敗,所以我嘗試了幾個與密鑰不同的選項,並且獲得了這一點。 – mwotton 2013-04-23 02:56:13

+0

@mwotton你只需複製'micha'和'micha.pub'在本地'%HOME%\。ssh'(Windows)或'的〜/ .ssh(UNIX)',並宣佈一個配置文件,這將讓你使用gitolite管理員回購的特殊帳戶(同時創建一個新的密鑰用於使用gitolite作爲用戶):請參閱http://stackoverflow.com/a/10909791/6309 – VonC 2013-04-23 05:14:39

2

gitolite指紋識別.ssh目錄中的所有密鑰 - 包括authorized_keys文件。從.ssh目錄和authorized_keys文件中刪除所有不需要的或損壞的密鑰。

+0

優秀。 +1。我已經在我的文檔中記錄了你的答案,並引用瞭解釋該行爲的gitolite代碼。 – VonC 2013-04-24 05:18:31

+0

謝謝:)我已經接受了你的答案,因爲它包含了失敗點和解決方案以及更好的技術解釋。 – mwotton 2013-04-24 07:33:42

+0

嗨!當你說「從.ssh目錄中刪除任何損壞的密鑰」時,你的意思是我們用戶的.ssh目錄? (從我們管理回購)或gitolite用戶服務器的.ssh目錄? – Rubendob 2014-11-11 10:15:36

2

我遇到了同樣的問題。原來,在複製粘貼過程中,我將一個換行符包含在我的一個密鑰中。花了我一些時間來發現它...

6

,如果你正在從puttykeygen等酒館鍵..這將與頭多線像

---- BEGIN SSH2 PUBLIC KEY ---- 
Comment: "[email protected]" 
startofkeylines 
.... 
endofkey== 
---- END SSH2 PUBLIC KEY ---- 

取出---開始和結束行,並註釋:行。將所有關鍵線都放在一條線上。並以ssh-rsa作爲前綴,如下所示:

ssh-rsa startofkeylines....endofkey== 

這是爲我工作的。

+1

或者,如果您加載一個PPK文件或產生的puttygen一個新的關鍵,不存在與標題框格式正確的公鑰:「公鑰粘貼到的OpenSSH authorized_keys文件」。使用它可以消除手動編輯它時破壞公鑰的可能性。 – mwotton 2014-11-02 22:57:53

0

對我來說,我通過而不是運行gitolite命令作爲root用戶。我創建了一個git用戶帳戶(並且發現它需要是可登錄的帳戶,即/etc/passwd中的/bin/false)。

+1

將gitolite作爲'root'運行有點冒險。通常這表示權限錯誤。如果您確定您的許可證是正確的,那麼如何創建能夠登錄的'git'用戶? – mwotton 2014-11-02 22:59:57

1

你寫道:「事實證明,gitolite保留了我之前嘗試設置的失敗的公鑰。」

我有同樣的問題。我得到的錯誤:

FATAL:指紋識別失敗「keydir/jsmith.pub」

我刪除了在客戶端失敗的關鍵,並做了一個混帳推,但還是同樣的問題。因此,我不得不登錄到gitolite服務器並運行以下命令:

rm ~/.gitolite/keydir/jsmith.pub 
gitolite setup 

解決了這個問題。這是有效的,因爲根據gitolite文檔,「這個推送的pubkey文件被簽出到〜/ .gitolite/keydir中」。那麼如果發生了一些致命錯誤,那麼酒吧鑰匙就不會放在適當的位置。所以有可能你甚至可以正確格式化你的ssh密鑰,但它仍然不會被寫入。

1

我已經嘗試過所有的關鍵再生,gitolite reinstlation,清除所有關鍵文件等,都沒有成功,直到我開始尋找gitolite的Git歷史。

問題是,github上的master分支& google.code回購被破壞。 我在指紋問題消失的情況下檢出了最新的穩定版本v3.6.4。我想我可以發現一個最近的承諾,這個問題。

+0

v3.6.5也可以 – c9s 2016-05-21 07:55:44

0

我升級gitolite從V2到V3,運行安裝和設置管理關鍵

則力推配置庫中,所有的問題都已經得到解決。

0

我遇到的問題是openssh在版本v6.8或版本中改變了指紋的缺省密碼(ssh-keygen -lf path-to-key),所以現在必須顯式傳遞密碼類型(-E md5)來獲得傳統行爲。回顧CHANGES文件顯示gitolite v3.6.5將'正確處理新樣式的ssh指紋(感謝Robin Johnson)「。 gitolite的升級解決了我的問題。