DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> HTML基礎知識 >> HTML5詳解 >> 搭建通過 ssh 訪問的 Git 服務器
搭建通過 ssh 訪問的 Git 服務器
編輯:HTML5詳解     

一、Git - 協議

Git 可以使用四種主要的協議來傳輸數據:本地傳輸,ssh 協議,Git 協議和 HTTP 協議。

Git 使用的傳輸協議中最常見的就是 ssh 了。大多數環境已經支持通過 ssh 對服務器的訪問 ,ssh 也是唯一一個同時支持讀寫操作的網絡協議。另外兩個網絡協議(HTTP 和 Git)通常都是只讀的。ssh 同時也是一個驗證授權的網絡協議;而因為其普遍性,一般架設和使用都很容易。

本文主要介紹如何搭建 ssh 協議的 Git 服務器。

二、在服務器上部署 Git

首先,你需要一台 Linux 器並且擁有 sudo 權限,本文使用的是 Debian 7.0 x32 。下面就開始安裝:

2.1 第一步,安裝 git :

$ sudo apt-get install git

2.2 第二步,創建一個 git 用戶,用來運行 git 服務:

$ sudo adduser git

2.3 第三步,設置訪問權限:

有幾個辦法可以讓團隊的每個成員都有訪問權:

  1. 給每個人建立一個賬戶。反復使用 adduser 並給所有人設定臨時密碼比較麻煩。
  2. 在服務器上建立一個 Git 賬戶,讓每個需要寫權限的人發送一個 ssh 公鑰,然後將其加入 Git 賬戶的 ~/.ssh/authorized_keys 文件。這樣,所有人都將通過 Git 賬戶訪問主機。
  3. 另一個辦法是讓 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 設置注釋文字,比如你的郵箱

關於創建公鑰的詳細信息,可以參考 http://github.com/guides/providing-your-ssh-key。

2.4 第四步,禁用 shell 登錄:

出於安全考慮,你可以用 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 登錄的話,會被拒絕登錄。

2.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

2.6 第六步,克隆遠程倉庫:

ssh 指定私鑰的配置管理,為本地添加 ssh 別名,編輯 ~/.ssh/config ,如果沒有該文件,創建一個:

$ vi ~/.ssh/config

在 config 中添加:

# 注釋說明Host 別名HostName 域名或 ipUser 登陸服務器用的賬號Port 端口號(默認22,可以不填,如果服務器修改了 ssh 登錄端口號,此處需要修改)IdentityFile 密鑰文件的位置

例如設置為:

# bingdian's git serverHost gitserverHostName 162.188.23.33User gitPort 9000IdentityFile ~/.ssh/server_rsa

現在,可以通過 git clone 命令克隆遠程倉庫了:

$ git clone ssh://git@gitserver:/home/git/project.git

接下來你就可以享受你的 Git 之旅了。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved