1. 程式人生 > >centos上搭建GIT伺服器

centos上搭建GIT伺服器

前言:作為目前世界上最先進的分散式版本控制系統,簡單來說就是高階大氣上檔次!
程式碼託管倉庫有兩種型別。遠端倉庫和本地倉庫;兩者沒啥不同,純粹為了7*24小時開機並交換大家的修改。
GitHub就是一個免費託管開原始碼的遠端倉庫。但是對於某些視原始碼如生命的商業公司來說,既不想公開原始碼,又捨不得給GitHub交保護費,那就只能自己搭建一臺Git伺服器作為私有倉庫使用。

相關git的具體介紹,有興趣的同學可以去搜索“廖雪峰”。廖雪峰老師將git很全面的講解了一遍,並且從中可以根據實際的操作命令能夠更好的理解git。
連結地址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000


正文:
實驗環境:
centos7:172.20.6.231 #作為git的伺服器端
centos7:172.20.2.240 #作為git客戶端

一般來說伺服器內部都有git這個命令。如果顯版本低,可以自行升級。本地實驗使用的是伺服器內部自帶的git。

服務端操作:172.20.6.231
1、建立git使用者 #用來管理GIT服務,併為git使用者設定密碼;useradd git && passwd git
2、伺服器端設定Git倉庫
設定/home/data/git/gittest.git為Git倉庫;
centos上搭建GIT伺服器
然後將Git倉庫的owner修改為git
centos上搭建GIT伺服器
至此,git伺服器搭建完成。然後我們在客戶端使用git命令進行測試。

客戶端 clone 遠端倉庫

git clone [email protected]:/home/data/git/gittest.git/
此時提示要輸入git使用者的密碼,輸入密碼後即可從git伺服器端拉取遠端程式碼倉庫到本地。
——————————————————————我是分割線—————————————

為了客戶端能夠更好的訪問git倉庫,因為我們使用ssh祕鑰的形式遠端訪問Git伺服器,在每次遠端拉取git倉庫時不需要輸入密碼,方便我們訪問。
注:以下操作伺服器端和客戶端的操作均在root使用者下操作,之前以為是git使用者設定祕鑰訪問導致在git使用者下建立祕鑰檔案訪問不通。

伺服器端:
開啟sshd的RSD認證,開啟sshd_config以下三個配置的註釋:
centos上搭建GIT伺服器


重啟sshd服務。systemctl restart sshd

由 AuthorizedKeysFile 得知公鑰的存放路徑是 .ssh/authorized_keys,實際上是 $Home/.ssh/authorized_keys,由於管理 Git 服務的使用者是 git,所以實際存放公鑰的路徑是 /home/git/.ssh/authorized_keys

在 /home/git/ 下建立目錄 .ssh(目錄許可權700,owner為git)
修改把 .ssh 資料夾的 owner 為 git (確保.ssh目錄下所有檔案的owner都屬於git,否則可能會導致認證失敗,無法獲取git遠端倉庫)
在.ssh目錄下建立authorized_keys檔案(檔案許可權600,owner為git)
修改 .ssh 目錄的許可權為 700
修改 .ssh/authorized_keys 檔案的許可權為 600

客戶端:
root使用者下建立祕鑰檔案
ssh-keggen
將.ssh下的公鑰檔案內容填寫至伺服器端:/home/git/.ssh/authorized_keys檔案內。如果有多個客戶端,可以將多個客戶端的公鑰檔案寫入到/home/git/.ssh/authorized_keys檔案內。

此時祕鑰訪問git倉庫配置完成。
客戶端測試祕鑰方式訪問:
centos上搭建GIT伺服器
可以看到我們在客戶端本地檢視到一個gittest的目錄。

最後:
禁止git使用者ssh登入伺服器
在伺服器端編輯:/etc/passwd修改git的條目為:
centos上搭建GIT伺服器
此時 git 使用者可以正常通過 ssh 使用 git,但無法通過 ssh 登入系統。