2. git人工部署。1. 開發人員本地 - git push -> github/gitee 2. 使用ssh終端登錄服務器 git pull -> 服務器
3. git自動化部署。開發人員本地 -git push -> 服務器ssh - hooks -> git checkout -f --> 更新代碼
本文詳解在Ubantu 16下搭建Git服務器,力求讓讀者知其所以然,僅需安裝Git和ssh,而無需其他軟件。
2服務器搭建
在真實服務器或虛擬機裏操作均可。另外,如果用VMware Workstation 16 Player的話,默認不用配置虛擬機網卡,本地機就能Ping通。教程使用普通用戶操作,如果是root用戶,就不用加sudo了,命令將更加簡潔。
2.1安裝Git和SSH
已安裝過的最好也再來一遍,以更新到最新,除非自己很清楚。
sudo apt-get install git
sudo apt-get install ssh
service ssh start
2.2新建用戶
方便管理倉庫,這裏新建一個叫git的用戶,名字可以任意,但推薦取名爲git。建議以後Git的相關的東西,都放到這個用戶目錄下。
注意,中途輸入的密碼是給新建的git用戶設置的密碼,其他直接回車使用默認信息即可。
sudo adduser git
注意,以上只是創建了叫git的用戶,後續的操作並沒有切換到該用戶進行。
2.3創建登錄證書
創建路徑.ssh,然後創建authorized_keys文件,這裏路徑和文件名不能任取,該文件用於存放各個git客戶端的RSA公鑰,只有在這個列表裏的客戶端才能連接git服務。公鑰在下一步創建。
cd /home/git/
sudo mkdir .ssh
sudo touch .ssh/authorized_keys
2.4本地端創建密鑰
注意,這一步在本地端進行。不同的本地用戶有不同的KEY。
ssh-keygen -t rsa
這裏在windows下進行,這個命令可以在CMD、PowerShell或Git bash裏執行。這裏選Git bash,任意空白處右鍵點擊Git bash here,然後右鍵粘貼執行,中途全默認按回車即可。
如上圖就已經生成,在用戶根目錄的.ssh文件夾內,id_rsa.pub就是我們要的公鑰:
2.5本地端公鑰上傳
這裏只是方法之一,只要能把id_rsa.pub傳到服務器就行。scp是ssh的文件複製命令。
scp id_rsa.pub [email protected]:/home/git/
注意,使用你自己的ip地址。
我們來到上邊.ssh文件夾內右鍵點擊Git bash here,右鍵粘貼執行,中途輸入yes,然後輸入剛纔創建git賬號的密碼,成功後如圖:
2.6服務器添加用戶公鑰
注意,在服務器端進行。使用cat指令將公鑰追加到authorized_keys文件。
sudo sh -c "cat id_rsa.pub >> .ssh/authorized_keys"
注意,如果不是root用戶,使用如下方式則會報權限錯誤:
sudo cat id_rsa.pub >> .ssh/authorized_keys
如果想確認是否成功,可以輸入命令查看:
head -n 5 authorized_keys
命令的意思是查看authorized_keys文件前5行的內容。
2.7創建倉庫存放路徑並設置所屬用戶爲git
路徑可任意起名,這裏叫gitrepo。
sudo mkdir gitrepo
sudo chown git:git gitrepo
2.8初始化倉庫並設置所屬用戶爲git
這裏建了一個叫test的倉庫。
cd /home/git/gitrepo
sudo git init --bare test.git
sudo chown -R git:git test.git
因爲這裏的test.git路徑下有多個文件,所以加-R參數遞歸。
到此,git服務器就算搭建完成,URL地址如下:
[email protected]:/home/git/gitrepo/test.git
安全選項
公鑰列表裏的客戶端都可以無需密碼直接可以使用git用戶登錄shell,如:
ssh [email protected]
下面通過修改/etc/passwd實現限制:
sudo nano /etc/passwd
按pagedown翻到最下面:
找到git用戶,一般都在最後,按鍵盤方向鍵移動光標到最後,將
git:x:1001:1001:,,,:/home/git:/bin/bash
改成:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
改完之後按照提示,分別按ctrl+X,y,回車,實現保存退出,這樣就OK了。
3測試
以下簡單測試Clone和Push,如果你之前用過git,那麼得到上邊的倉庫地址後應該就非常熟悉了。
3.1 Clone
在本地電腦上新建一個文件夾A,右鍵打開Git bash here,試試克隆,會得到一個空的test文件夾。
git clone [email protected]:/home/gitrepo/test.git
注意,ip地址請改成自己的。 還有,這裏並不需要輸入上邊創建git用戶的密碼,如果需要輸入密碼,說明公鑰添加有誤,請重新檢查。
3.2 Push
進入test文件夾內,右鍵新建文本文檔,內容任意。
右鍵打開Git bash here,添加所有文件,然後提交。
git add -A
git commit
在彈出的文本中填入本次更改日誌,測試用就隨意寫,然後保存關閉。
通過克隆來的遠程倉庫,默認有個別名叫origin,所以推送可以直接這樣:
git push origin master
3.3再次克隆
新建一個文件夾B,並進入,右鍵打開Git bash here克隆,和之前一樣:
git clone [email protected]:/home/git/gitrepo/test.git
可以看到這個就是剛纔提交的文本文檔:
4使用TortoiseGit的密碼彈窗問題
TortoiseGit是一個圖形界面的Git,不用打“繁瑣”的命令了。
4.1 嘗試Clone
建一個新建文件夾C,右鍵Git Clone,在URL中填入:
[email protected]:/home/git/gitrepo/test.git
如果這時直接點擊OK,那麼會有輸入遠端git用戶密碼的提示框,因爲遠端已經有本地機的公鑰了,這顯然不符合常理。這一點TortoiseGit和Git bash不一樣,需要另外加載私鑰。
當然,這裏要是輸入了上邊創建的git用戶的密碼,也能克隆,這個密碼只有管理員知道,自己現在就是管理員,多個git客戶端的情況下別人就不知道了,除非你把密碼告訴世界上所有人咯。
4.2創建PPK私鑰
找到開始菜單TortoiseGit文件夾下的PuTTYgen打開:
按圖中步驟操作,中間會有彈窗提示,默認即可。加載2.4步驟創建密鑰生成的私鑰id_rsa,然後另存爲putty_rsa.ppk。
4.3 Clone
回到新建文件夾C下,右鍵Git Clone,Load Putty Key 中加載剛纔生成的putty_rsa.ppk
可以看到,已經能正常Clone了。
END
————————————————
版權聲明:本文爲CSDN博主「新塘老笨」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_40692629/article/details/124420970