簡單搭建一個私有Git服務器

本文是對 廖雪峯官方網站 - 搭建Git服務器 的實踐。

常用的git使用方法 GIT CHEAT SHEET

1. 前言

我是用我的雲服務器來作爲Git服務器的。有一點需要注意,使用的是該雲服務器的公網ip哦。

2. 安裝git

# ubuntu系統
~$ sudo apt-get install git
# centos系統
~$ sudo yum install git

3. 創建git用戶

git用戶是專門用來運行git服務的。

~$ sudo adduser git

4. 創建證書登錄

將所有需要用到這個Git倉庫的用戶的SSH公鑰保存到Git服務器中的/home/git/.ssh/authorized_keys。剛開始.ssh這個目錄可能並不存在,創建一個就行了,然後把所有用戶的公鑰(通常爲/home/用戶名/.ssh/id_rsa.pub)保存在authorized_keys文件中即可。

若你的電腦中沒有/home/用戶名/.ssh/id_rsa.pub,那麼需要生成。

~$ ssh-keygen -t rsa -C "[email protected]"

5. 創建一個Git倉庫

首先,要明白的是,Git倉庫到底是個什麼東西? 歸根結底就是一個目錄而已。

創建一個/home/git/myGitServer/sample.git目錄作爲一個倉庫。

~$ sudo git init --bare sample.git

通過--bare參數創建的是一個裸倉庫。裸倉庫就是沒有工作區的倉庫。這是因爲服務器上的Git倉庫純粹是爲了共享,所以不讓用戶直接登錄到服務器上去改工作區,並且服務器上的Git倉庫通常都以.git結尾。

修改sample.git目錄的權限

~$ sudo chown -R git:git sample.git

6. 禁用shell登錄

爲什麼要禁用shell登錄?這是出於安全方面的考慮。git用戶應該只允許使用git-shell,而不能使用/bin/bash。在/etc/passwd文件中找到git用戶,把/bin/bash直接修改成/usr/bin/git-shell

~$ sudo vim /etc/passwd
# 將 git:x:1001:1001:,,,:/home/git:/bin/bash 改爲
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

這樣git用戶可以正常通過ssh使用git(因爲git pushgit pull這些操作都是基於ssh協議的),但無法登錄shell。

7. 試試看

現在就可以將這個Git服務器當作github來使用了。在你的電腦上使用git來克隆服務器上的sample.git中的代碼。

sjl@DESKTOP-BL7A7IA:~$ git clone git@Git服務器的ip:/home/myGitServer/sample.git
Cloning into 'sample'...
[email protected]'s password:
warning: You appear to have cloned an empty repository.

讓我們用ssh來連接看看

sjl@DESKTOP-BL7A7IA:~$ ssh [email protected]

[email protected]'s password:
Last login: Wed Jun 10 18:33:37 2020
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to x.113..189.175 closed.

很明顯,使用git用戶登錄失敗了,那麼使用root用戶試試呢

sjl@DESKTOP-BL7A7IA:~$ ssh [email protected]
[email protected]'s password:
Last failed login: Wed Jun 10 20:51:31 CST 2020 from 218.85.119.92 on ssh:notty
There were 278 failed login attempts since the last successful login.
Last login: Wed Jun 10 18:33:52 2020 from 106.39.148.254

登錄成功了。

現在可以將該倉庫作爲的你的遠程倉庫使用了。

~$ git remote add mygithub git@Git服務器的ip:/home/myGitServer/sample.git

~$ git remote
mygithub

如果不需要私有的Git服務器,那麼直接使用Github就好了,如果嫌Github網速慢,使用國內版 Gitee
要方便管理公鑰,用Gitosis
要像SVN那樣變態地控制權限,用Gitolite

8. 擴展

有些同學可能還知道另外一個代碼託管網站 GitLab,那麼GitLabGitHub有啥區別呢?

下面這一段來自博客 GitHub與GitLab的區別以及GitLab的搭建與使用

GitLab和GitHub一樣屬於第三方基於Git開發的作品,免費且開源(https://github.com/gitlabhq/gitlabhq 基於MIT協議),與Github類似,可以註冊用戶,任意提交你的代碼,添加SSHKey等等。不同的是,GitLab是可以部署到自己的服務器上,數據庫等一切信息都掌握在自己手上,適合團隊內部協作開發,你總不可能把團隊內部的智慧總放在別人的服務器上吧?簡單來說可把GitLab看作個人版的GitHub。

我們前面所搭建的Git服務器,只能push,pull代碼,沒有其他註冊用戶等功能,說直白點就是沒有一個像GitHub這樣的網站來管理,因此才需要用到GitLab。要搭建GitLab還是參考這篇博客 GitHub與GitLab的區別以及GitLab的搭建與使用

參考文獻

[1] 廖雪峯官方網站 - 搭建Git服務器
[2] Git官方網站的Book教程 可以選擇中文哦
[3] GitHub與GitLab的區別以及GitLab的搭建與使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章