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 登錄系統。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章