2012年3月1日 星期四

Windows 7 + Git + ssh

之前團隊需要一個SCM來管理程式,簡單study了一下,最後決定用Git來管理團隊的程式(其實也沒有study多少,主要原因還是因為Git功能強大,而且好像很好玩 XD)

公司裡面沒有Linux base的Server,倒是新買了一台Window7的主機,又不想灌VM,因此就直接在Windows7上面架Git Server囉。

簡單的拜了一下Google大神,目前大家普遍使用的環境是msysgit + Copssh,其中msysgit是提供Windows環境下的Git Repository,由於是要架Server給其他Client來使用,因此需要搭配一個protocol來作傳輸,Copssh就是擔任這個角色。由於ssh會先將資料壓縮後加密,就傳輸上來說比較有效率。

msysgit以及Copssh目前在網路上都可以下載,只是Copssh現在已經不是免費的了(有心的話還是可以找到的)

另外由於團隊大部份人使用eclipse來開發,因此最後也要做到能夠直接從EGit(eclipse上的git plugin)來存取git Server

先簡單將重點outline在下面:
    • msysgit提供Windows上的git repository
    • Copssh提供Windows上的ssh連線
    • Copssh的使用者必須從Windows上面的使用者來加入
    • Copssh提供產生金鑰的功能,每個使用者都可以產生各自的私鑰
    • 因為不明原因,eclipse裡面用的private key如果有加上passphrase會出現問題,所以我用Copssh在產生私鑰的時候,就不設定passphrase
    關於msysgit以及Copssh的安裝,網路上已經有很多的資料,其中我最推薦這篇,照著做的話應該沒問題,我這裡只介紹一些重點

    接下來就一步一步來進行
    如果要讓其他人可以透過ssh來存取Server端的git repo
    1. 在Server端Windows系統必須替每個使用者新增帳號
    2. 在Copssh中,將Windows帳號加入,並且為每個帳號產生一個private key
    3. 將private key交給該使用者
    在Copssh裡面加入一個帳號,按下右邊的"ADD"按鈕

    "Forward"

    選擇要加入Copssh的使用者,下拉式選單讓你可以從目前Windows使用者來選取

    設定這個使用者的一些屬性

    完成

    接下來要替剛加入的帳號產生一個private key

    "Forward"

    選擇加密的類型以及長度,按下"Forward"

    如同之前所講的,這裡產生的private key是要給eclipse的EGit用的,如果設定Passphrase會出現不明的問題,因此在這裡將Empty passphrase勾選起來,不設定其值

    完成

    在Copssh該使用者的目錄下會看到剛產生的private key


    接下來要在eclipse裡面利用ssh連結git repo

    Window -> Preferences -> General -> Network Connections -> SSH2,在General tab裡面按下"Add Private Key"按鈕,選擇從Server拿到的private key


    在eclipse裡面切換到GIT Perspective,在GIT Repositor的Tab裡面按下"Clone a Git Repo.."按鈕

    輸入Server端的URI資訊

    選擇要匯入的branch

    選擇本端(client)的資料夾,按下"Finish"完成

    在Git Repostories 可以看到剛才加入的Repostory

    所有程序到此完成結束


    由於我們ssh使用的是RSA加密演算法,所以這裡簡單介紹一下概念:

    RSA有兩種用法
    1. 加密:公鑰用來加密,私鑰用來解密
    2. 簽章:私鑰加密,公鑰解密,也說是憑證

    加密:
    公鑰和私鑰是成對出現的。公鑰用來加密,私鑰用來解密。公鑰加密的訊息只有同對的私鑰可以解密。公鑰可以傳給其他人,私鑰只可以自己擁有。當其他人拿到用公鑰加密過的訊息,由於沒有私鑰,所以無法讀取訊息內容。

    簽章:
    公鑰和私鑰是成對出現的。公鑰用來解密,私鑰用來加密。如果公鑰解出來的訊息是正確的,帶表這訊息是由私鑰擁有者所傳送出來,藉此達成所謂簽章的效果。

    reference :
    Step by Step Setup Git Server on Windows with CopSSH + msysGit and Integrate Git with Visual Studio
    Public-key cryptography
    鳥哥

    沒有留言:

    張貼留言