1. 程式人生 > >自建 Git server

自建 Git server

什麼是 GitHub

GitHub就是一個免費託管開原始碼的遠端倉庫。但是對於某些視原始碼如生命的商業公司來說,既不想公開原始碼,又捨不得給GitHub交保護費,那就只能自己搭建一臺Git伺服器作為私有倉庫使用。

前期準備

  • 準備一臺執行Linux的機器。
    • 假設你已經有sudo許可權的使用者賬號,下面,正式開始安裝。

開始安裝

第一步,安裝git:

$ sudo apt-get install git

第二步,建立一個git使用者,用來執行git服務:

$ sudo adduser git

第三步,建立證書登入:

  • 收集所有需要登入的使用者的公鑰,就是他們自己的id_rsa.pub
    檔案,把所有公鑰匯入到 /home/git/.ssh/authorized_keys 檔案裡,一行一個

第四步,初始化Git倉庫:

  • 先選定一個目錄作為Git倉庫,假定是/home/git/sample.git,在 /home/git 目錄下輸入命令:
$ sudo git init --bare sample.git

Git就會建立一個裸倉庫,裸倉庫沒有工作區,因為伺服器上的Git倉庫純粹是為了共享,所以不讓使用者直接登入到伺服器上去改工作區,並且伺服器上的Git倉庫通常都以.git結尾

  • 然後,把owner改為git:
$ sudo chown -R git:git sample.git

第五步,禁用shell登入:

出於安全考慮,第二步建立的git使用者不允許登入shell,這可以通過編輯 /etc/passwd 檔案完成。找到類似下面的一行:

git:x:1001:1001:,,,:/home/git:/bin/bash

改為:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

這樣,git使用者可以正常通過ssh使用git,但無法登入shell,因為我們為git使用者指定的git-shell每次一登入就自動退出。

第六步,克隆遠端倉庫:

現在,可以通過git clone命令克隆遠端倉庫了,在各自的電腦上執行:

$ git clone [email protected]:/srv/sample.git
# Cloning into 'sample'...
# warning: You appear to have cloned an empty repository.

剩下的推送就簡單了。

管理公鑰

  • 如果團隊很小,把每個人的公鑰收集起來放到伺服器的/home/git/.ssh/authorized_keys檔案裡就是可行的。如果團隊有幾百號人,就沒法這麼玩了,這時,可以用 Gitosis來管理公鑰。

管理許可權

有很多不但視原始碼如生命,而且視員工為竊賊的公司,會在版本控制系統裡設定一套完善的許可權控制,每個人是否有讀寫許可權會精確到每個分支甚至每個目錄下。因為Git是為Linux原始碼託管而開發的,所以Git也繼承了開源社群的精神,不支援許可權控制。不過,因為Git支援鉤子(hook),所以,可以在伺服器端編寫一系列指令碼來控制提交等操作,達到許可權控制的目的。Gitolite就是這個工具。

這裡也不介紹Gitolite了,不要把有限的生命浪費到許可權鬥爭中。

文章作者:糖醋魚

相關推薦

Git server

什麼是 GitHub GitHub就是一個免費託管開原始碼的遠端倉庫。但是對於某些視原始碼如生命的商業公司來說,既不想公開原始碼,又捨不得給GitHub交保護費,那就只能自己搭建一臺Git伺服器作為私有倉庫使用。 前期準備 準備一臺執行Linux的機器。

Linux 筆記 #06# 在 VPS 上 Git倉庫

lin 安全性 bom x86 amp style 圖片 sudo entos 參考: GitHub Help: Connecting to GitHub with SSH 廖雪峰的官方網站: 搭建Git服務器 菜鳥教程: Git 服務器搭建 1. 安裝記錄(

git服務器搭建使用記錄

false centos use email ref pub rsa 環境 keygen Git本地中文文件名問題解決 linux環境 //Git本地中文文件名問題解決 git config --global core.quotepath false 克隆自建的Linux

git服務器連接Pycharm系列二:在centos7上搭建git服務器

搭建 str dsc 虛擬 conf char har pat 連接 在自己的Linux虛擬機上,搭建git服務器,用來保存代碼。 centos7本身自帶git,需要先卸載,安裝成較新的版本。 1、卸載系統自帶版本 系統已經自帶 [root@dscrapy01 ~

git服務器連接Pycharm系列三:在Win10上,安裝git

type .com 創建 連接 ffffff 安裝git vpd 系統 png 在win10系統上,安裝git,作為客戶端 安裝: Git-2.18.0-64-bit.exe 安裝步驟: 都是簡單的安裝過程,只截圖簡單表示下 只有第4、8兩步有點更改 1 選擇安裝

git服務器連接Pycharm系列四:pycharm項目更新到git服務器中

strong 提示 char 點擊 win pychar set repo info 在pycharm中,已經開始敲代碼了,這是一個已經存在,沒連接到git服務器的一個項目工程。 現在就要實現,如何把這個項目同步到服務器。 > 前提:> 1. 已經在Linu

ngrok server

git clone https://github.com/inconshreveable/ngrok.git      NGROK_DOMAIN="han1" openssl genrsa -out base.key 2048 openss

git 訪問gitlab報錯:Please make sure you have the correct access rights and the repository exists.

1.首先設定git身份的名字和郵箱:     git config --global user.name "yourname"     git config --global user.email“[email protected]"

本地git倉庫推送到伺服器git倉庫實現目錄檔案同步教程[整理]

1.首先,先在伺服器上安裝git,如果有git的話就不用走這一步了 yum安裝git [[email protected] ~]# cd src/ [[email protected] src]# wget http://dl.fedoraproj

分享的 Jrebel License Server 啟用 Jrebel

  使用線上驗證伺服器啟用 Jrebel 與 Idea 說明 程式碼來自於開源專案: gsls200808 / JrebelLicenseServerforJava 自建的服務地址 http://jrebel.

分享的 Jrebel License Server 激活 Jrebel

uuid comm 默認端口 jdk6 idg contex dex -s 使用 使用在線驗證服務器激活 Jrebel 與 Idea 說明 代碼來自於開源項目: gsls200808 / JrebelLicenseServerforJava 自建的服務地址

對Yii2中 yiiwebUser的理解,和的appmodelsUser(基礎版),frontendmodelsUser的應用原理

end his iat getter authent property 用戶id tails uniq yii\web\User 是一個統稱,為用戶,沒有具體實例,只能管理; 此處以app\models\User為基準; app\models\User 是映射數據表us

02_創Git倉庫,克隆倉庫,git add,git commit,git push,git pull,同行沖突,不同行沖突的結局方案,git mergetool的使用

round rom weight art sdn automatic remote then config 1 創建Git資源庫,殘酷文件夾信息 創建git資源庫的命令: git init –bare 倉庫名稱 (當中-bare表示的意思是空的庫的意思)

U-Mail企業郵箱域名解析設置

後臺 mail 生效 clas img 解析錯誤 位置 固定 實現 如果域名沒有做解析,只能用於內網收發郵件。要想實現與外網郵箱的收發,需要做域名解析。是在“域名解析後臺”進行設置(域名提供商提供“域名解析後臺")。 1. 域名

Linuxyum源倉庫

配置文件 管理工具 軟件包 linux yum倉庫 本文以自建guestfish鏡像管理工具源為例: 第一步:清空本地的yum緩存,避免跟以前下載的包混淆; #yum clean all 第二步:yum下載所需要的軟件包。 註:這裏有兩種方法可以緩存rpm包:

將GitLab數據庫從阿裏雲PostgreSQL RDS遷移至的PostgreSQL服務器

bsp 控制臺 創建 升級 postgresq pre 低版本 sse esql 阿裏雲RDS目前支持的是PostgreSQL 9.4,而gitlab支持的最低版本是PostgreSQL 9.6.1,不升級PostgreSQL,gitlab就無法升級,阿裏雲RDS短期內不進

阿裏雲RDS備份的tar格式包恢復到本地數據庫

數據庫驗證 group span gpl utils ibdata1 復制 自建 sql數據庫 說明 阿裏雲RDS-mysql數據庫是通過percona-Xtrabackup進行備份的,所以恢復時也需要安裝該軟件。 另外註意的是:你自己下載的MySQL版本要和阿裏雲上的My

docker swarm體驗簡單之美

hab 3.2 ebs acs docs nal 自建 port advertise 之前用的阿裏雲容器服務,但由於acsrouting的路由錯亂問題,被逼上自建docker swarm的梁山。今天嘗試自己搭建docker swarm,竟然輕松搞定,簡單的超乎想象。 以下

已經在Git Server服務器上導入了SSH公鑰,可用TortoiseGit同步代碼時,還是提示輸入密碼?

www 服務器端 com 技術分享 style 訪問 github 情況 ima GitHub雖好,但畢竟在國內訪問不是很穩定,速度也不快,而且推送到上面的源碼等資料必須公開,除非你給他交了保護費;所以有條件的話,建議大家搭建自己的Git Server。本地和局域網服務器都

docker倉庫Registry

建倉 問題解決 pin efi lan crt gis install fault 因為生產情況下官方容器還是比較慢的,所以會用到自建docker倉庫。docker官方提供完整部署倉庫的容器,你只需要提供域名證書,把文件系統掛載到容器,一個用戶密碼文件就可以使