在linux上跑git server
環境設定
系統: linux mint
套件: sudo apt-get install openssh-server git
基本操作
安裝完openssh-server和git後,即可開始嘗試創建remote repository。
為了之後的安全性議題,創建一個新的帳號來管理git server
|
|
下方指令新增project.git目錄做為remote repository
(我新增在此帳號的家目錄下,而git官方文件則是放在 /opt/git/ 裡)
|
|
remote repository已經建立,可以開始使用。
git@gitserver 代表 登入帳號@serverIP位置
試著用ssh連線抓下git repository吧。
|
|
當然push pull指令也沒問題囉~ 只要有該帳戶密碼即可。
|
|
安全性議題 - SSH Public Key Authentication
上述推送git repository的流程中,只需要有帳號密碼即可登入。
我們可以改以更安全的SSH Public Key Authentication來登入
client
在terminal上輸入ssh-keygen
全部使用預設值後,成對的公私鑰會出現在~/.ssh裡
- 公鑰:id_rsa.pub
- 私鑰:id_rsa
公鑰長起來像這樣
1
|
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCB007n/ww+ouN4gSLKssMxXnBOvf9LGt4LojG6rs6hPB09j9R/T17/x4lhJA0F3FR1rP6kYBRsWj2aThGw6HXLm9/5zytK6Ztg3RPKK+4kYjh6541NYsnEAZuXz0jTTyAUfrtU3Z5E003C4oxOj6H0rfIF1kKI9MAQLMdpGW1GYEIgS9EzSdfd8AcCIicTDWbqLAcU4UpkaX8KyGlLwsNuuGztobF8m72ALC/nLF6JLtPofwFBlgc+myivO7TCUSBdLQlgMVOFq1I2uPWQOkOWQAHukEOmfjy2jctxSDBQ220ymjaNsHT4kgtZg2AYYgPqdAv8JggJICUvax2T9va5 gsg-keypair |
server
登入管理git server的帳戶
|
|
把允許連到這個server的用戶公鑰,複製貼上到~/.ssh/authorized_keys文件中。
|
|
authorized_keys中,有幾個公鑰就放幾行。
|
|
安全性議題 - 限制shell功能
如果有人遠端登入伺服器後,使用vi、rm、touch等指令隨便更改repository內容,豈不是很危險。
因此要限制此帳戶只能拿來做為唯一用途──推送版本庫。
將原本的bash-shell改為git-shell,使此帳戶只剩下git相關功能吧。
編輯權限檔
|
|
passwd檔案底會出現剛剛的帳戶,這行可能長這樣。
|
|
由左到右分別代表
帳戶:密碼(以x代替):UID(使用者識別碼):GID(群組識別碼):家目錄位置:使用的shell
將shell替代成git-shell,使此帳戶只剩下git相關功能。
|
|
git-shell的位置可以用下列指令找到
|
|
調整完權限後,再想以ssh登入此帳戶就會出現
|
|
此帳號無法再使用shell囉~