Git 可使用四種主要的協議來傳輸數據:本地傳輸,ssh 協議,Git 協議和 HTTP 協議。 git
Git 使用的傳輸協議中最多見的就是 ssh 了。大多數環境已經支持經過 ssh 對服務器的訪問 ,ssh 也是惟一一個同時支持讀寫操做的網絡協議。另外兩個網絡協議(HTTP 和 Git)一般都是隻讀的。ssh 同時也是一個驗證受權的網絡協議;而由於其廣泛性,通常架設和使用都很容易。 github
本文主要介紹如何搭建 ssh 協議的 Git 服務器。 shell
首先,你須要一臺 Linux 器而且擁有 sudo 權限,本文使用的是 Debian 7.0 x32 。下面就開始安裝: 安全
$ sudo apt-get install git
$ sudo adduser git
有幾個辦法可讓團隊的每一個成員都有訪問權: bash
這裏咱們使用第二種方法,收集全部須要登陸該 Git 服務器用戶的公鑰,就是他們本身的 id_rsa.pub 文件,把全部公鑰導入到 /home/git/.ssh/authorized_keys 文件裏,每行一個。(注意:/home/git/.ssh/authorized_keys 這個文件的 owner 爲 Git ,若是不是請使用 chown 命令修改)。 服務器
下面是建立公鑰命令: 網絡
$ ssh-keygen -t rsa -C 'your email@domain.com'
-t 指定密鑰類型,默認即 rsa ,能夠省略 dom
-C 設置註釋文字,好比你的郵箱 ssh
關於建立公鑰的詳細信息,能夠參考 http://github.com/guides/providing-your-ssh-key。 ide
出於安全考慮,你能夠用 Git 自帶的 git-shell 工具限制 git 用戶的活動範圍。這能夠經過編輯 /etc/passwd 文件完成。找到相似下面的一行:
把 bin/sh 改成 /usr/bin/git-shell (或者用 which git-shell 查看它的實際安裝路徑)
git:x:1003:1003:,,,:/home/git:/bin/bash
改成:
git:x:1003:1003:,,,:/home/git:/usr/bin/git-shell
如今 git 用戶只能用 ssh 鏈接來推送和獲取 Git 倉庫,而不能直接使用服務器的 shell。嘗試普通 ssh 登陸的話,會被拒絕登陸。
選定一個目錄做爲 Git 倉庫,如 /home/git/project.git ,在 /home/git/ 目錄下輸入命令:
$ sudo git init --bare project.git
Git 會建立一個裸倉庫,裸倉庫沒有工做區,由於服務器上的 Git 倉庫是爲了共享,因此不讓用戶直接登陸到服務器上去改工做區,而且服務器上的 Git 倉庫一般都以 .git 結尾。而後,把 project.git 的 owner 改成 git :
$ sudo chown -R git:git project.git
ssh 指定私鑰的配置管理,爲本地添加 ssh 別名,編輯 ~/.ssh/config ,若是沒有該文件,建立一個:
$ vi ~/.ssh/config
在 config 中添加:
# 註釋說明 Host 別名 HostName 域名或 ip User 登錄服務器用的帳號 Port 端口號(默認22,能夠不填,若是服務器修改了 ssh 登陸端口號,此處須要修改) IdentityFile 密鑰文件的位置
例如設置爲:
# bingdian's git server Host gitserver HostName 162.188.23.33 User git Port 9000 IdentityFile ~/.ssh/server_rsa
如今,能夠經過 git clone 命令克隆遠程倉庫了:
$ git clone ssh://git@gitserver:/home/git/project.git
接下來你就能夠享受你的 Git 之旅了。