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

centos上搭建GIT服務器

版本 text RoCE 自己 author follow 創建秘鑰 sha 由於

前言:作為目前世界上最先進的分布式版本控制系統,簡單來說就是高端大氣上檔次!
代碼托管倉庫有兩種類型。遠程倉庫和本地倉庫;兩者沒啥不同,純粹為了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倉庫;
技術分享圖片
然後將Git倉庫的owner修改為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以下三個配置的註釋:

技術分享圖片
重啟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倉庫配置完成。
客戶端測試秘鑰方式訪問:
技術分享圖片
可以看到我們在客戶端本地查看到一個gittest的目錄。

最後:
禁止git用戶ssh登錄服務器
在服務器端編輯:/etc/passwd修改git的條目為:
技術分享圖片
此時 git 用戶可以正常通過 ssh 使用 git,但無法通過 ssh 登錄系統。

centos上搭建GIT服務器