git 可以使用四種主要的協議來傳輸資料:本地傳輸,ssh 協議,git 協議和 http 協議。
git 使用的傳輸協議中最常見的就是 ssh 了。大多數環境已經支援通過 ssh 對伺服器的訪問 ,ssh 也是唯一乙個同時支援讀寫操作的網路協議。另外兩個網路協議(http 和 git)通常都是唯讀的。ssh 同時也是乙個驗證授權的網路協議;而因為其普遍性,一般架設和使用都很容易。
本文主要介紹如何搭建 ssh 協議的 git 伺服器。
首先,你需要一台 linux 器並且擁有 sudo 許可權,下面就開始安裝:
1 安裝 git
$ sudo apt-get install git
2 建立乙個 git 使用者,用來執行 git 服務
$ sudo adduser git
3 設定訪問許可權
有幾個辦法可以讓團隊的每個成員都有訪問權:
給每個人建立乙個賬戶。反覆使用 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 命令修改)。
下面是建立公鑰命令:
$ ssh-keygen -t rsa -c 'your [email protected]'
-t 指定金鑰型別,預設即 rsa ,可以省略
-c 設定注釋文字,比如你的郵箱
關於建立公鑰的詳細資訊,可以參考
4 禁用 shell 登入
把 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 登入的話,會被拒絕登入。
5 初始化git倉庫
選定乙個目錄作為 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
6 轉殖遠端倉庫
ssh 指定私鑰的配置管理,為本地新增 ssh 別名,編輯 ~/.ssh/config ,如果沒有該檔案,建立乙個:
$ vi ~/.ssh/config
在 config 中新增:
# 注釋說明host 別名
hostname 網域名稱或 ip
user 登陸伺服器用的賬號
port 埠號(預設22,可以不填,如果伺服器修改了 ssh 登入埠號,此處需要修改)
identityfile 金鑰檔案的位置
例如設定為:
# bingdian's git serverhost 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 之旅了。
搭建通過 ssh 訪問的 Git 伺服器
git 可以使用四種主要的協議來傳輸資料 本地傳輸,ssh 協議,git 協議和 http 協議。git 使用的傳輸協議中最常見的就是 ssh 了。大多數環境已經支援通過 ssh 對伺服器的訪問 ssh 也是唯一乙個同時支援讀寫操作的網路協議。另外兩個網路協議 http 和 git 通常都是唯讀的。...
搭建通過 ssh 訪問的 Git 伺服器
from git 可以使用四種主要的協議來傳輸資料 本地傳輸,ssh 協議,git 協議和 http 協議。git 使用的傳輸協議中最常見的就是 ssh 了。大多數環境已經支援通過 ssh 對伺服器的訪問 ssh 也是唯一乙個同時支援讀寫操作的網路協議。另外兩個網路協議 http 和 git 通常都...
搭建通過 ssh 訪問的 Git 伺服器
git 可以使用四種主要的協議來傳輸資料 本地傳輸,ssh 協議,git 協議和 http 協議。git 使用的傳輸協議中最常見的就是 ssh 了。大多數環境已經支援通過 ssh 對伺服器的訪問 ssh 也是唯一乙個同時支援讀寫操作的網路協議。另外兩個網路協議 http 和 git 通常都是唯讀的。...