服務器額外的防范措施:
搭建git服務器后通常會建立一個git賬戶,其它人共用這個賬戶來克隆或推送數據到git倉庫中,通常也只需要這個功能,但是如果不加限制,那么其它人可以通過這個git賬戶登錄到主機,那么這樣是不安全的,所以需要加以限制,方法如下:
編輯/etc/passwd這個文件,在文件末尾可以找到類似這樣的行:
git:x:1002:1002::/home/git:/bin/sh 改為: git:x:1002:1002::/home/git:/usr/bin/git-shell
把/bin/sh改為/usr/bin/git-shell,這樣git這個賬戶就只能用來克隆或者推送數據到git倉庫中了,而不能用它來登錄到主機。
現在 git 用戶只能用 SSH 連接來推送和獲取 Git 倉庫,而不能直接使用主機 shell。嘗試普通 SSH 登錄的話,會看到下面這樣的拒絕信息:
[root@localhost ~]# ssh git@192.168.25.133
git@192.168.25.133's password:
Last login: Wed Jun 13 21:52:02 2018
fatal: Interactive git shell is not enabled.
hint: ~/git-shell-commands should exist and have read and execute access.
Connection to 192.168.25.133 closed.
管理大量用戶使用git權限:gitosis
在/home/git/.ssh文件中有authorized_keys文件,這個文件里邊存放了需要使用git項目的用戶的公鑰,也就是允許誰可以git你的項目
適用於開發者較少的情況,如果開發者數量達到幾百人的規模時,管理起來十分費力,每次增加或刪除用戶時都必須登錄到服務器上去,而且還缺少必要的權限管理,因為用戶對所有在/home/git下的git項目都擁有讀寫權限。
使用gitosis這個東西,gitosis是用來管理authorized_keys文件和簡單連接限制的腳本。添加、刪除用戶或設定權限這些工作是通過管理一個特殊的git倉庫來實現的,你只需要在這個倉庫做好相應的設置,然后推送到服務器上,gitosis就會隨之改變策略,聽起來不錯吧。
