Linux下搭建git伺服器 Jenkins持續整合環境部署
1、安裝Git
見 Jenkins持續整合環境部署 第四節
2、建立Git使用者和使用者組
1 groupadd git 2 useradd git -g git
3、建立證書
切換到git使用者建立證書
1 su git 2 cd /home/git 3 mkdir .ssh 4 chmod 700 .ssh 5 touch .ssh/authorized_keys 6 chmod 600 .ssh/authorized_keys
注意:.ssh的許可權必須是700,authorized_keys的許可權必須是600
生成公鑰和私鑰檔案
1 $ cd .ssh 2 $ ssh-keygen -t rsa
首先會讓你輸入要儲存公鑰的位置,直接回車即可,接著會提示讓你重複一個密碼兩次,如果不想再使用公鑰的時候輸入密碼,直接回車即可。完成後會在home目錄下的.ssh目錄中生成兩個檔案id_rsa(私有金鑰)和id_rsa.pub(公鑰)。
4、初始化Git倉庫
首先,我們選定一個目錄作為Git倉庫,假定是/home/gitdeport/runoob.git
1 $ cd /home 2 $ mkdir gitdeport 3 $ chown git:git gitdeport 4 $ cd gitdeport 5 $ git init --bare runoob.git 6 Initialized empty Git repository in /home/gitdeport/runoob.git/
以上命令Git建立一個空倉庫,伺服器上的Git倉庫通常都以.git結尾。然後,把倉庫所屬使用者改為git:
1 $ chown -R git:git runoob.git
5、在客戶端安裝git
先安裝git,再安裝TortoiseGit,安裝好後開啟Git Bash:
6、設定使用者名稱、郵箱
Git是分散式版本控制系統,所以需要填寫使用者名稱和郵箱作為一個標識。每一個 Git 的提交都會使用這些資訊,並且它會寫入到你的每一次提交中,不可更改。如果使用了 --global 選項,那麼該命令只需要執行一次,因為之後無論你在該系統上做任何事情, Git 都會使用那些資訊。 當你想針對特定專案使用不同的使用者名稱稱與郵件地址時,可以在那個專案目錄下執行沒有 --global 選項的命令來配置。
如果想要檢查你的配置,可以使用 git config --list 命令來列出所有 Git 當時能找到的配置,如下圖:
7、將Windows客戶端和Linux服務端關聯起來
想要將客戶端和服務端連線的話要建立證書登入
開啟windows的git bash,輸入ssh-keygen -t rsa -C “郵箱”,生成ssh私鑰和公鑰,如下圖:
此時,C:\Users\使用者名稱.ssh 下會多出兩個檔案 id_rsa 和 id_rsa.pub。id_rsa 是私鑰,id_rsa.pub是公鑰。
收集所有需要登入的使用者的公鑰,公鑰位於id_rsa.pub檔案中,把我們的公鑰匯入到/home/git/.ssh/authorized_keys檔案裡,一行一個。
服務端Git開啟RSA認證
進入 /etc/ssh 目錄,編輯 sshd_config,開啟以下三個配置的註釋:
儲存後重啟sshd服務:
將客戶端公鑰加到伺服器
將客戶端公鑰id_rsa.pub檔案的內容寫到伺服器端 /home/git/.ssh/authorized_keys 檔案裡
注:以上金鑰只適用於使用Git Bash進行命令管理git的,即clone、push、pull等相關操作在Git Bash才不用輸入密碼,而如果使用TortoiseGit 視覺化介面,仍然要輸入密碼。
8、在客戶端clone遠端倉庫
將伺服器上的/home/gitdeport/runoob.git庫克隆到本地 git clone 使用者名稱@伺服器地址:倉庫路徑,如下圖:
造成上面報錯的原因是Linux伺服器上git的安裝路徑是/usr/local/git,不是預設路徑,根據提示,在git伺服器192.168.182.130上, 建立連結檔案:
1 ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
再次執行clone命令成功,如下圖:
這個過程有一點要千萬注意:.ssh的許可權必須是700,authorized_keys的許可權必須是600
9、禁用git使用者的shell登入
出於安全考慮,建立的git使用者不允許登入shell,可以通過編輯/etc/passed檔案完成,找到類似下面這一行:
1 git:x:501:502::/home/git:/bin/bash
改為:
1 git:x:501:502::/home/git:/usr/bin/git-shell
這樣,git使用者可以正常通過ssh使用git,但無法登入shell,因為我們為git使用者指定的git-shell每次一登入就自動退出。
TortoiseGit 無需輸入密碼方法
1、開啟puttygen
2、生成公鑰和私鑰
點選save private key儲存putty的私鑰,putty的金鑰的字尾名是ppk。 把公鑰新增到.ssh/authorized_keys
注意:
公鑰在authorized_keys的檔案形式是一行一個公鑰,否則該公鑰不起作用。
3、在tortoisegit上使用金鑰
這樣就OK了!!
使用TortoiseGit將檔案提交至git伺服器
提交失敗,報錯了,原因是:Linux伺服器上git的安裝路徑是/usr/local/git,不是預設路徑。
根據提示,在git伺服器192.168.182.130上, 建立連結檔案:
1 ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack
再次提交成功,如下圖: