Linux下搭建Git服務器


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

再次提交成功,如下圖:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM