2011-12-07 181 views
1

我使用gitosis來託管我的家庭服務器上的git存儲庫。不同的鍵推入git存儲庫

我已經設置它接受三個SSH密鑰:我的主密碼(無密碼),具有讀/寫訪問權限,我的密碼之一(我更喜歡將其放在其他人擁有根的服務器上)寫入權限,以及只有讀權限的第三個密鑰。

這個想法是,在遠程主機上(我不擁有它,所以別人有它的根),我可以有我的密碼私鑰和第三個(只讀)鍵,然後在該機器上我可以在沒有密碼的情況下拉動並使用密碼鍵推回。

Gitosis很好,它會接受任何具有正確權限的密鑰。但是當我使用這兩個鍵時,我無法按照自己想要的方式工作。我指着他們在我的SSH配置 - 在〜/ .ssh/config中的遠程主機上我有以下幾點:

Host * 
IdentityFile ~/.ssh/id_rsa 
IdentityFile ~/.ssh/id_rsa.passphrase 

當我拉或克隆這只是罰款 - 操作不提示完成我輸入密碼。但是當我推動時,我收到一條消息,說我沒有權限。它顯然只嘗試了第一個密鑰文件。

如果我交換兩個IdentityFile行,我會提示輸入密碼,無論我是推還是拉。所以它仍然只是嘗試第一個密鑰文件。

有沒有辦法獲得我想要的行爲 - 也就是說,在執行推式和其他寫操作時使用一個密鑰文件,而在執行只讀操作時使用其中一個密鑰文件?

+1

太晚了切換到Gitolite?我強烈推薦它。 – Nic

回答

1

您可以設置多個遙控器來做到這一點。每個遠程可以有不同的網址。您的網址可以在您的.ssh/config文件中進行配置,以指向您喜歡的任何位置並使用您想要的任何密鑰。

+0

這是一個很好的解決方案。我將pushurl設置爲虛擬主機名。然後,我使用相同的虛擬主機名稱添加了Host部分到SSH配置文件,但是HostName realhost.example.com行和相關的IdentityFile行。這很好。謝謝! – tremby

相關問題