Git 可以使用四種主要的協定來傳輸資料:本地傳輸,ssh 協定,Git 協定和 HTTP 協定。
Git 使用的傳輸協定中最常見的就是 ssh 了。大多數環境已經支援通過 ssh 對伺服器的通路 ,ssh 也是唯一一個同時支援讀寫操作的網絡協定。另外兩個網絡協定(HTTP 和 Git)通常都是隻讀的。ssh 同時也是一個驗證授權的網絡協定;而因為其普遍性,一般架設和使用都很容易。
本文主要介紹如何搭建 ssh 協定的 Git 伺服器。
首先,你需要一台 Linux 器并且擁有 sudo 權限,本文使用的是 Debian 7.0 x32 。下面就開始安裝:
有幾個辦法可以讓團隊的每個成員都有通路權:
給每個人建立一個賬戶。反複使用 adduser 并給所有人設定臨時密碼比較麻煩。
在伺服器上建立一個 Git 賬戶,讓每個需要寫權限的人發送一個 ssh 公鑰,然後将其加入 Git 賬戶的 ~/.ssh/authorized_keys 檔案。這樣,所有人都将通過 Git 賬戶通路主機。
另一個辦法是讓 ssh 伺服器通過某個 LDAP 服務,或者其他已經設定好的集中授權機制,來進行授權。
這裡我們使用第二種方法,收集所有需要登入該 Git 伺服器使用者的公鑰,就是他們自己的 id_rsa.pub 檔案,把所有公鑰導入到 /home/git/.ssh/authorized_keys 檔案裡,每行一個。(注意:/home/git/.ssh/authorized_keys 這個檔案的 owner 為 Git ,如果不是請使用 chown 指令修改)。
下面是建立公鑰指令:
-t 指定密鑰類型,預設即 rsa ,可以省略
-C 設定注釋文字,比如你的郵箱
出于安全考慮,你可以用 Git 自帶的 git-shell 工具限制 git 使用者的活動範圍。這可以通過編輯 /etc/passwd 檔案完成。找到類似下面的一行:
把 bin/sh 改為 /usr/bin/git-shell (或者用 which git-shell 檢視它的實際安裝路徑)
改為:
現在 git 使用者隻能用 ssh 連接配接來推送和擷取 Git 倉庫,而不能直接使用伺服器的 shell。嘗試普通 ssh 登入的話,會被拒絕登入。
標明一個目錄作為 Git 倉庫,如 /home/git/project.git ,在 /home/git/ 目錄下輸入指令:
Git 會建立一個裸倉庫,裸倉庫沒有工作區,因為伺服器上的 Git 倉庫是為了共享,是以不讓使用者直接登入到伺服器上去改工作區,并且伺服器上的 Git 倉庫通常都以 .git 結尾。然後,把 project.git 的 owner 改為 git :
ssh 指定私鑰的配置管理,為本地添加 ssh 别名,編輯 ~/.ssh/config ,如果沒有該檔案,建立一個:
在 config 中添加:
例如設定為:
現在,可以通過 git clone 指令克隆遠端倉庫了:
接下來你就可以享受你的 Git 之旅了。
本文轉自 h2appy 51CTO部落格,原文連結:http://blog.51cto.com/h2appy/1695859,如需轉載請自行聯系原作者