一 前言
前面已經貼了兩個鏈接,為什么還要再寫一篇呢,因為可能由於個人能力問題,我覺得上面兩篇寫的都有點簡略,有些地方不太好理解,並不能一次性成功搭建,所以想根據自己踩過的坑再寫一篇更詳細的。所以如果有用戶搜到了這篇文章且看完沒有成功搭建,請評論中回復讓我知道原因繼續完善,謝謝!
另外,本次安裝不涉及權限管理,因為只是自己測試,還未用於生產環境。
二 准備環境
本次測試使用兩台虛擬機,一台Ubuntu系統作為Git服務器(以下稱為服務器),一台CentOS系統作為客戶端(以下稱為客戶端)
三 配置服務器
第一步:檢查服務器是否安裝了ssh服務,這個沒記錯的話Ubuntu是自帶有的,如果沒有安裝即可
第二步:安裝git,具體方法請看官網文檔,包含了Ubuntu和CentOS系統的安裝方法,安裝完畢在終端中執行git --version命令,如正常輸出版本號,說明安裝成功。
第三步:修改hsots配置,在hosts文件中將服務器的IP指向gitserver,將客戶端的IP指向gitclient,如下圖:

第四步:在服務器上創建git用戶,
sudo useradd git
然后賦予管理員權限,即將其加到/etc/sudoers文件中,添加時參考root的配置即可
第五步:在服務器上創建代碼倉庫,這里我在/home/git/repo下執行命令:
git –bare init /home/git/sample.git
成功執行后在服務器上創始了sample.git文件夾,如下圖:

然后將該文件夾所有者設為git,執行如下命令:
sudo chown -R git:git sample.git
到此,Ubuntu服務器的配置完畢,接下來配置客戶端。
四 客戶端配置
第一步:同樣,在客戶端確認ssh是否有安裝,並安裝git
第二步:修改客戶端的hosts文件,將服務器的IP指向gitserver
第三步:執行ssh-keygen -t rsa命令生成密鑰,如下圖:

注意,不要輸入文件名,一直回車就好,不要輸入任何內容,全部使用默認配置,成功后會自動在用戶的home目錄下創建.ssh文件夾,並將生成的公鑰和密鑰放到這個文件夾下。這里是要設置無密碼登錄服務器,因為服務器的密碼不可能讓所有人知道,提交代碼時使用密鑰進行身份驗證
第四步:將.ssh文件夾下生成的id_rsa.pub文件上傳到服務器git用戶home目錄(/home/git)下,在服務器上使用git用戶登錄,查看home目錄下是否有.ssh文件夾,如果沒有,手動創建,如果有進入其中查看是否有名為authorized_keys文件,如果沒有,同樣手動創建即可。確認authorized_keys文件存在后執行cat ../id_rsa.pub>>authorized_keys命令,將客戶端用戶公鑰導入到驗證文件。
第五步:在客戶端上新建存儲代碼的文件夾,進入該文件夾,執行git clone git@gitserver:/home/git/repo/sample.git命令,該命令的作用是使用git用戶身份從服務器拉取代碼,若可正常拉代碼且無需輸入密碼,說明搭建成功。之后就可以像公共倉庫一樣進行代碼管理了。
五 善后
所有用戶的公鑰導入完畢后,最好禁用git用戶登錄權限(git用戶應該只用於代碼管理,不用作其它事情,如果再要導入新的用戶公鑰可以用其它有管理員權限的帳戶),具體做法是修改/etc/passwd文件中git的設置,如下圖:

將命令執行環境設成git的shell,/usr/bin/git-shell而非/bin/bash,這樣git用戶無法通過ssh工具如putty遠程登錄系統了,但是可以通過ssh在git中進行各種操作。
