安裝git
創建一個git用戶,用來運行git服務
$ sudo adduser git
$ su git
$ cd ~
$ mkdir .ssh
在git用戶新建一個.ssh的目錄,將開發者的SSH公鑰添加到git這個用戶的authorized_keys這個文件當中。
創建證書登錄
-
設置本地git用戶配置
`$ git config --global user.name "username"` `$ git config --global user.email "user@email.com"`
-
創建SSH Key,私鑰和公鑰
`$ ssh-keygen -t rsa -C "user@email.com"` 你需要把郵件地址換成你自己的郵件地址,然后一路回車,使用默認值即可,無需設置密碼。 如果一切順利的話,可以在用戶主目錄里找到.ssh目錄,里面有id_rsa和id_rsa.pub兩個文件,這兩個就是SSH Key的秘鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。
-
添加SSH Key
將本地生成的id_rsa.pub內容追加到git服務器git用戶的~/.ssh/authorized_keys
-
ssh服務端配置
$ sudo vim /etc/ssh/sshd_config RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile /home/git/.ssh/authorized_keys
初始化git倉庫
$ cd ~
$ mkdir project.git
$ git init --bare project.git
禁用git用戶shell登錄
出於安全考慮,第二步創建的git用戶不允許登錄shell,這可以通過編輯/etc/passwd文件完成。找到類似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
改為:
git:x:1001:1001:,,,:/home/git:/usr/local/bin/git-shell
這樣,git用戶可以正常通過ssh使用git,但無法登錄shell,因為我們為git用戶指定的git-shell每次一登錄就自動退出。
克隆遠程倉庫
現在,可以通過git clone命令克隆遠程倉庫了,在各自的電腦上運行:
$ git clone git@192.168.1.10:/home/git/project.git
Cloning into 'project'...
warning: You appear to have cloned an empty repository.
管理公鑰和權限
如果團隊很小,把每個人的公鑰收集起來放到服務器的/home/git/.ssh/authorized_keys文件里就是可行的。如果團隊有幾百號人,就沒法這么玩了,這時,可以用Gitlab來管理公鑰和權限,Gitlab類似Github。