我們在前一篇中有談到架設Git server,不過使用的是http方式把專案clone回來,這樣會覺得沒有安心,因為沒有通過加密的機制,不過基於這個安全的疑慮,所以我寫了這篇文章,這篇是使用ssh方式架設Git server,其實過程比較容易。
第一步
一樣先去下載Git for windows安裝,如果這一步已經做過可以跳下一步,沒有做過可以參考,上篇文章的第四步。(第四步要全部做完,包含設定GitRepo放所有Git專案的根目錄)
第二步
我們要用SSH的方式做存取git server,就必須要架設一個ssh server,與先前教學文章中架設的FreeSSHd server最大不同是,FreeSSHd server是存取cmd.exe,其他設定都無法做其他的用途。
不過這次我們要架設另外一個ssh server,叫做Bitvise SSH Server ,這個與上述不一樣的地方是,它不只可以存取Windows cmd.exe,可以設定存取bash.exe,還有使用來存取git Repos。
這個ssh server叫做Bitvise SSH Server,它也是一個安裝在Windows上可以運行ssh server,不過它有分個人版與標準版,差別在於,個人版要稍微註冊一些資訊,使用Windows上實體的帳戶數量的限制,不過這個選項我們用不太到,我們只用到虛擬的帳號,而且限制數量到10個,很夠用了,所以我們使用個人版本即可。先到網址下載Download Bitvise SSH Server (WinSSHD)文字連結,點選下去之後等他下載完後開啟BvSshServer-Inst.exe。可以參考圖一的解說,基本上就是打開之後,其他選項不需要動,可以選擇自己要安裝路徑之外,選擇好以後,按下I agree…就可以按下Install按鈕了。接著會跳出選擇版本,選Personal edition,接著會要求填寫名字,就自己隨意填一下吧XD。(參考圖二)
第三步
圖二做完按下OK之後就會開始安裝,最後跑完會跳出一個警示的視窗,裡面內容是說請你把系統server重新開機,要讓驗證的public key可以被驗證以外,也要讓虛擬帳戶可以完整的啟動,所以我們依照指示重新開機。(參考圖三)重新開機之後,可以看到SSH server已經隨著開機自動啟動了。接著打開常駐工作列點兩下圖示把出來出現設定的畫面。按照圖四開啟Open easy settings。
第四步
點下去之後,依照圖五方式設定,下面有可能預設式勾選起來的要把勾選選項取消。把port number改成非預設的,上面預設是22,我已經改過所以把它框起來,下面選單記得要改成
Do not change Windows firewall settings,如果內建防火牆有開啟的話,自己去設定輸入防火牆的規則就好。設定的方式可以參考這篇裡面的注意事項。
第五步
切換到 Virtual accounts選項,裡面我們可以設定虛擬帳號來存取ssh,按照圖六方式把新增帳號對話窗打開。
第六步
我們先建立一個可以存取git的bash,按照圖七與圖十的方式把對應的欄位填入。(每個設定都要與圖相同)圖十是把server重新啟動。
git的bash路徑會在這個預設路徑 : C:\Program Files (x86)\Git\bin,如果是x86的話把預設路徑改成 : C:\Program Files\Git\bin
第七步
接著我們可以試著用putty連看看,按照圖十一與十二的方式就可以順利連上去了。
第八步
按照第七步,我們可以看到成功連上的樣子(圖十三)。這樣一個bash就算完成了,我們可以輸入一些Linux指令得到圖十四的結果。
第九步
我們新增一個可以存取bash的ssh的虛擬使用者之後,接下來我們要新增一個可以利用ssh存取Git專案的虛擬帳號了。我們從步驟六開始,圖七還是一樣,到圖八不一樣,所以我們從圖八操作開始,可以參考圖十五與圖十六的設定,圖十六注意框起來的地方是否有設定正確。Git binaries directory,指的是這個預設路徑 : C:\Program Files (x86)\Git\libexec\git-core,而Git repositories root directory則是我們在第一步設定的D:\GitRepos根目錄。做完圖十六之後再按下save changes接著就完成了,別忘了要重啟server,與圖十相同。
第十步
環境變數的設定,可以參考前一篇文章[環境變數的設定]的章節。
第十一步
設定完成後,可以把一個專案放上去試試看。這裡我放的是evaluate這個專案,也可以放自己的專案,我現在用這個當作例子。我們切換到client端,打開git-bash,並按照圖十七方式,就可以成功把專案以ssh方式從server上clone回來了。
[後記]
可能在一開始再使用ssh連線bash的時候,會遇到是否要信任server上這個金鑰,或是在clone專案的時候詢問是否要使用這個金鑰,一律回答是與yes。