伺服器端:
1.安裝 Git
1.1 從yum上安裝git
yum –y install git
1.2 驗證是否安裝成功
git --version
如果顯示當前版本號,說明安裝成功
2.建立 Git 的專屬管理賬戶和密碼
2.1 建立 Git 賬戶
adduser git
2.2 設定 Git 賬戶的密碼
passwd git
連續兩次輸入密碼後即可
檢視 Git 賬戶是否建立成功
cd /home && ls -al
如果有 git 說明安裝成功
3. 建立測試git倉庫
- 切換到git賬戶
su git
- 進入git賬號的使用者主目錄
cd /home/git
- 在使用者主目錄下建立
test.git
倉庫的資料夾mkdir test.git && cd test.git
- 在
test.git
目錄下初始化git
倉庫git init --bare
-
其中
git init --bare
是在當前目錄建立一個裸倉庫,也就是說沒有工作區的檔案,直接把git倉庫隱藏的檔案放在當前目錄下,此目錄僅用於儲存倉庫的歷史版本等資料。 -
倉庫的路徑為:
/home/git/test.git
4.配置賬戶免密碼登入
4.1 建立ssh的預設目錄
- 進入 git 賬戶的主目錄
cd /home/git
- 建立
.ssh
的配置,如果此資料夾已經存在請忽略此步mkdir .ssh
4.2 建立校驗公鑰的配置檔案
-
進入
.ssh
目錄並建立authorized_keys
檔案,此檔案存放客戶端遠端訪問的ssh
的公鑰cd /home/git/.ssh touch authorized_keys
-
設定許可權
chmod 700 /home/git/.ssh/ chmod 600 /home/git/.ssh/authorized_keys
5. 開啟 RSA 認證
Centos 7.4 以上版本的系統請跳過
- 切換回
root
使用者su root
- 進入
/etc/ssh
目錄,編輯sshd_config
cd /etc/ssh vi ssh_config
- 按
i
進入插入模式,開啟以下三個配置的註釋(帶#
為註釋), 按ESC
退出插入模式,按:wq
儲存RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
- 可以通過
vim
的正則搜尋快速定位, 命名模式下:/RSAA
- 可以通過
儲存後重啟sshd服務
systemctl restart sshd
- CentOS7.4棄用RSAAuthentication支援 : https://ashub.cn/articles/21
- Linux系統下如何配置SSH_Centos7 ssh連線配置 CentOS7下安全配置 : http://www.linuxdown.net/install/config/20...
- CentOS7.4配置SSH登入密碼與金鑰身份驗證踩坑 :https://www.cnblogs.com/Leroscox/p/9627809...
6. 禁止客戶端 shell 登入
如果
git
客戶端可以直接通過shell
使用git
賬戶來遠端登入伺服器,這樣是不安全的
- 在
/home/git
下面建立git-shell-commands
目錄,並把目錄的擁有者設定為git
賬戶。可以直接用git
賬號登入伺服器終端操作su git mkdir /home/git/git-shell-commands
- 修改
/etc/passwd
檔案su root vim /etc/passwd
可以通過
vim
的正則搜尋快速定位到這行:/git:x
找到下圖所示內容, 其中 1000
可能是別的數字
將
git:x:1000:1000::/home/git:/bin/bash
改為
git:x:1000:1000::/home/git:/bin/git-shell
可能用到的快捷鍵:
- 最好不要直接改,可以先複製一行,然後註釋掉一行,修改一行,保留原始的
- vim快捷鍵: 命令模式下:
yy
複製行,p
貼上0
游標到行首$
到行尾x
刪除一個字元i
進入插入模式- 修改完後退出儲存:
esc
進入命令模式, 輸入::wq!
儲存退出。
服務端配置到此全部完成
客戶端:
1.與服務端在同一主機下的客戶端配置
1.1 安裝git
由於是與服務端放在同一主機下,在安裝服務端時已經安裝
1.2 客戶端配置
- 設定使用者名稱和郵箱
git config --global user.name "client_username" git config --global user.email "example@mail.com"
- 檢視是否存在ssh keys
cd ~/.ssh
- 建立
ssh keys
ssh-keygen -t rsa -C "example@mail.com"
碰到需要輸入的地方直接按Enter鍵,最後建立成功後的結果如下
- 將生成的檔案複製到
git
目錄下cp /root/.ssh/id_rsa.pub /home/git/.ssh/test.pub
- 將
test.pub
檔案中的內容追加到authorized_keys
中cat test.pub >> authorized_keys
1.3 克隆倉庫
- 建立本地資料夾
mkdir test_project && cd test_project
- 克隆遠端倉庫
git clone git@ip地址:/home/git/test.git
這時候,會提示克隆的倉庫是空的,現在倉庫的確是空的,所以沒有報錯
ls
檢視目錄下是否存在 test
資料夾,如果存在,說明克隆成功
2. 遠端客戶端配置(Windows 10)
2.1 安裝 Windows 版 Git 工具
- 雙擊
Git-2.14.0-64-bit.exe
執行
- 選擇安裝目錄
- 點選
Next
- 點選
Next
- 點選
Next
- 點選
Next
- 點選
Next
8.點選 Next
9.點選 Next
10.點選 Install
等待安裝完成
在桌面右鍵,如果顯示
說明安裝成功
2.2 客戶端配置
- 設定使用者名稱和郵箱
git config --global user.name "client_username" git config --global user.email "example@mail.com"
- 檢查是否已經擁有ssh公鑰和私鑰
進入目錄C:\Users\你的使用者名稱
檢視是否有.ssh
資料夾,此資料夾下是否有如下兩個檔案
- 如果沒有,那麼用
ssh-keygen
建立ssh
的私鑰
右鍵桌面,選擇 Git Bash Here
- 建立
ssh keys
ssh-keygen -t rsa -C "example@mail.com"
碰到需要輸入的地方直接按Enter鍵,最後建立成功後的結果如下
- 手動將公鑰新增到伺服器中,先找到
C:\Users\你的使用者名稱.ssh\id_rsa.pub
這個檔案所在目錄 - 在當前目錄開啟
Git Bash Here
- 把本地的
id_rsa.pub
檔案拷貝到git
伺服器scp ./id_rsa.pub root@你的ip地址:/home/git/.ssh/test.pub
由於上面的步驟禁止了 git
客戶端 shell
登入,所以這裡只能使用 root
賬戶拷貝檔案
- 登入伺服器,找找上一步上傳的
test.pub
檔案,目錄為/home/git/.ssh/
9.將test.pub
檔案中的內容追加到authorized_keys
中cat test.pub >> authorized_keys
2.3 克隆倉庫
- 建立本地資料夾
mkdir test_project && cd test_project
- 克隆遠端倉庫
git clone git@ip地址:/home/git/test.git
這時候,會提示克隆的倉庫是空的,現在倉庫的確是空的,所以沒有報錯
ls
檢視目錄下是否存在 test
資料夾,如果存在,說明克隆成功
本地提交與伺服器端的拉取測試
- 在上一步克隆的
test
資料夾中新建一個檔案test.txt
- 在當前目錄中開啟
Git Bash Here
,git status git add -A; git commit -m'test add' git push origin master
如果出現如上提示,說明本地提交成功
- 切換到伺服器端,進入
1.3
步驟中建立的資料夾下(請根據實際情況輸入目錄)cd /test_project/test git pull
如果出現如上提示,說明更新成功
結語
至此,整個 Git
服務的部署與使用就全部搭建完成,部署過程中使用的命令所代表的功能請自行百度,就不再一一說明了