學習鏈接:博客園、廖雪峰 一 前言 本次安裝不涉及許可權管理,因為只是自己測試,還未用於生產環境 二 準備環境 本次測試使用兩台虛擬機,一臺Ubuntu系統作為Git伺服器(以下稱為伺服器),一臺CentOS系統作為客戶端(以下稱為客戶端) 三 配置伺服器 第一步:檢查伺服器是否安裝了ssh服務,這個 ...
一 前言
前面已經貼了兩個鏈接,為什麼還要再寫一篇呢,因為可能由於個人能力問題,我覺得上面兩篇寫的都有點簡略,有些地方不太好理解,並不能一次性成功搭建,所以想根據自己踩過的坑再寫一篇更詳細的。所以如果有用戶搜到了這篇文章且看完沒有成功搭建,請評論中回覆讓我知道原因繼續完善,謝謝!
另外,本次安裝不涉及許可權管理,因為只是自己測試,還未用於生產環境。
二 準備環境
本次測試使用兩台虛擬機,一臺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中進行各種操作。