可是最近會有不同的專案,會用到這個 Git Server。那原先的架構就不太適合了。
原先安裝好 Git 之後,是利用 git 資料夾當中,/.ssh/authorized_keys 這個檔案放入公鑰,而自己的機器上放私鑰的方法,來讓 git 可以自動登入,並且進行存取。
但是這樣設定的 Git Server ,會變成每個能夠進入的使用者,都可以對每個專案做存取。如果希望能夠依照不同的人設定不同專案的存取權限,這種設定就會有安全上的顧慮。
在網路上查詢之後,一般用來控管不同的人用不同的專案,用的是 Gitosis ,但是在 Windows 上面, 怎麼樣做 key 就是無法自動登入,都會詢問我 Server 上 git 帳號的密碼。這樣也就沒有自動辨別身分的功能了。
經過多次的嘗試,終於知道要怎麼做了,筆記如下:
- 先安裝好 msysGit (git for windows): http://msysgit.github.io/
- 下載 Tortoisegit 並且安裝,安裝時不要選 TortoisePLink, coming from Putty, 要選 OpenSSH Git defualt SSH Client。
- 這時候,一般的 Tortoisegit 的使用方法是利用 puttygen 產生一個 ppk ,然後讓 Tortoisegit 使用,但是在 git + Gitosis 的狀況下,我們不能用 TortoisePLink ,所以不應該這樣做。我們應該要先把安裝 Git 的資料夾位置的 bin 路徑,放入系統的 PATH 參數當中。
- 利用 msysGit 所帶來的ssh-keygen (在 Git 安裝資料夾當中,bin 的資料夾內) 產生 key,方法是 ssh-keygen -t rsa。
- 但是以上步驟會問你資料夾在何處,先隨便找個地方放。
- 先試著啟動 Tortoisegit ,然後建立 repo 之後,試著 push 上伺服器,這時候會失敗。但是會在 Windows 的使用者資料夾下產生一個資料夾為 【.ssh】 (例如 C:\Users\gituser\.ssh),然後把利用 ssh-keygen 產生的兩個 key 都放在這個資料夾當中。
- 接著就可以把 id_rsa.pub 上傳到伺服器,放到伺服器上的 keydir 並且進行設定,就可以了。