安裝gitolite,並ssh公鑰無密碼登錄


安裝gitolite,並ssh公鑰無密碼登錄

gitolite是管理git版本庫的一種方案,它將git版本庫的管理信息放在了一個特殊git版本庫里。gitolite與linux操作系統集成了,需要使用linux操作系統的用戶登錄gitolite,從而也就可以使用linux操作系統的無密碼登錄方式。
以下是在ubuntu14.04上安准個gitolte的步驟。gitolite需要依賴的軟件有git ssh perl,請確保他們提前安裝好了。

首先在管理員賬戶下進行如下操作

創建公私鑰對備用
ssh-keygen -t rsa
(如果要自其它電腦上連接gitolite,可以把生成的私鑰拷貝過去使用)

創建專用賬戶,常用user name 為git:
sudo adduser --system --shell /bin/bash --group git

設置密碼:
sudo passwd git

設置公鑰自動登錄(因為是本機所以是git@localhost)
sudo ssh-copy-id git@localhost

設置公鑰自動登錄如果失敗,還可以切換到git賬戶,然后直接使用一系列命令完成
1.切換到git賬戶
su git

2.進入git用戶的跟目錄
cd ~

3.在根目錄下創建.ssh目錄
mkdir .ssh

4.設置.ssh目錄的權限是700
chmod 700 .ssh

5.在.ssh目錄下創建authorized_keys文件
cd .ssh
touch authorized_keys

6.設置authorized_keys的權限是600
chmod 600 authorized_keys

7.將第一步生成的公鑰追加到authorized_keys的末尾(/path/to/is_rsa.pub要替換為實際的路徑)
sudo cat /path/to/is_rsa.pub >> authorized_keys

通過上面的步驟就設置好了一個可以ssh公鑰免密碼登錄的git賬戶。
另開一個控制台(注意不能切換到git用戶)下執行下面的命令進行測試。
ssh -i /path/to/is_rsa git@localhost
第一次鏈接會提示未知的主機是否繼續鏈接,點擊yes會將主機的地址(localhost)添加到已知主機列表。
不理解的話請參考阮一峰的日志《ssh的原理與應用》http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html

進入git賬戶之后可以安裝gitolite了,

首先要保證在當前用戶的目錄,可以輸入如下命令
cd ~

將gitolite下載到git的用戶目錄(本步驟也可以從其它地方任何信任的地方把gitolite拷貝到git的用戶目錄)
git clone git://github.com/sitaramc/gitolite

在git用戶目錄下創建一個bin文件夾
mkdir bin

然后設置bin目錄到環境變量,本來是需要編輯/etc/profile文件,在尾部加上一句 export PATH=/home/git/bin:$PATH
在此我們簡單處理,只為當前控制台上下文設置環境變量,在控制台輸入下面的命令回車
PATH=/home/git/bin:$PATH

然后執行gitolite文件夾下的install命令進行安裝
gitolite/install -ln
上面的安裝命令表示 安裝方式是在bin文件夾下建立一個指向gitolite文件夾下gitolite腳本的符號鏈接

還可以執行下面的命令安裝(注意不要重復執行安裝命令)
gitolite/install -to $HOME/bin

至此gitolite已經安裝好了,其實很簡單,就是創建用戶,就是把gitolite的文件放到指定的目錄,然后在指定的目錄創建符號鏈接。但是ssh的公私鑰還沒用上呢!下面開始介紹gitolite的配置,公鑰在此時將會用上。

接下來要進行gitolite的配置,此時還是要登錄到git賬戶下進行。執行如下命令
gitolite setup -pk /path/to/id_rsa.pub
(/path/to/id_rsa.pub是剛才用於自動登錄的公鑰的路徑,確保git賬戶有權訪問它)
該命令執行成功的效果是將/path/to/id_rsa.pub中的內容拷貝到了/home/git/.ssh/authorized_keys文件中,包含在# gitolite start和# gitolite end之間。在git的用戶目錄下創建一個repositories目錄,並在其中初始化了兩個版本庫,其中gitolite-admin是用來管理git版本庫的版本庫。至此gitolite算是安裝完成了。

接下來退出git賬戶,再次使用ssh命令連接git賬戶。
sudo ssh -i path/to/id_rsa git@localhost
(path/to/id_rsa是與剛才那個公鑰對應的私鑰的訪問路徑)
會發現此時鏈接不上git賬戶了,並產生了如下消息。
hello xxxx, this is git@xxxxx running gitolite3 v3.6.3-6-gedd979c on git 1.7.0.4

            R W    gitolite-admin
                               R W    testing
                                               Connection to localhost closed.
這是因為git賬戶目前已經作為登錄gitolite的賬戶使用了,不能再作為一般賬戶使用。

然后的任務就是對git版本庫進行管理,首先要在管理git版本庫的機器上把gitolite-admin版本庫下載下來。
由於我是在本機上操作的所以我的命令是下面的
git clone git@localhost:gitolite-admin
(非常不好意思,我的這個命令執行不成功,提示沒有gitolite-admin這個版本庫,這是因為登錄git帳號時沒有把默認目錄設置為repositories。)
目前的解決辦法是在:后面寫出完整路徑。實際的命令是下面的
git clone git@localhost:/home/git/repositories/gitolite-admin

另外一個需要注意的是,需要在clone版本庫之前需要將剛才的私鑰拷貝到用於管理版本庫的機器的用於管理版本庫的賬戶的主目錄的.ssh文件夾下面。並且要確保git和ssh有權讀取這個私鑰。

(另外一個不好意思,據gitolite的官方文檔說,私鑰起效后clone版本庫時是不需要輸入密碼的,但是我這里還是提示我輸入密碼。)

剩余的兩個問題如果有知道解決辦法的煩請在回復中告知以下。我解決這個問題后,也會更新這個文檔。

 

非常操蛋的是,我今天又按照自己的步驟重新安裝了一遍,居然以上兩個問題都沒有了。此次安裝的時候執行的命令是gitolite/install -to $HOME/bin。

另外一個要注意的是登錄git控制台的密鑰和管理gitolite的密鑰不能是同一對,否則將會提示錯誤。

如果兩次安裝希望指定不同的管理員用戶,那么必須徹底卸載掉原來的安裝。需要把隱藏的gitolite相關文件和版本庫都刪除。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM