搭建團隊git工做環境 [完整流程記錄]

  • 服務器環境 Linux CentOS 6.5 (IP:192.168.1.101)html

  • 客戶機環境 Mac (IP:192.168.1.100)python

  • 本文使用管理員進行操做git

1. [服務器] 安裝git

$ sudo yum install git

若sudo碰到以下報錯(無錯忽略這裏):github

sudo: /etc/sudoers is mode 0640, should be 0440shell

直接恢復 /etc/sudoers 權限爲0440便可(須要管理員權限)。centos

$ chmod 440 /etc/sudoers

2. [服務器] 安裝 openssh 服務器與客戶端工具

$ sudo yum install openssh-server openssh-client

3. [服務器] 配置git用戶

賬戶建立後,默認家目錄會在 /home/git(若設定爲其它目錄請修改路徑)bash

$ sudo useradd -m git   
$ sudo passwd git #密碼你隨意

4. [服務器] 建立git倉庫目錄

建立默認的倉庫目錄 repositories,此目錄能夠在後面 gitosis.conf 配置文件裏進行修改服務器

$ sudo mkdir /home/git/repositories

設置git倉庫權限dom

$  sudo chown git:git /home/git/repositories   
$  sudo chmod 755 /home/git/repositories

初始化git全局設置ssh

$  git config --global user.name "myname"   
$  git config --global user.email "myname@server"

5. [服務器] 安裝 gitosis 管理工具

安裝 python 的 setup tool

$  sudo yum install python-setuptools

安裝 gitosis

$  cd /tmp   
$  git clone https://github.com/res0nat0r/gitosis.git    
$  cd gitosis   
$  sudo python setup.py install

6. [服務器] 建立用於管理git的公鑰和私鑰

默認狀況下,公鑰和私鑰會保存在~/.ssh目錄下

$ ssh-keygen -t rsa

公鑰須要添加到 /home/git/.ssh/authorized_keys 這裏git操做時纔不用輸入密碼,不過請不手動添加進來,咱們須要使用gitosis來管理客戶機git權限

注意:之前手動加進去的公鑰是不受gitosis權限管理的,須要管理就刪除手動加入的,讓gitosis自動加入

7. [服務器] 配置gitosis

使用上面生成的公匙導入到gitosis裏,本機就有了git的管理權限

$  cp ~/.ssh/id_rsa.pub /tmp 
$  sudo -H -u git gitosis-init < /tmp/id_rsa.pub 
$  sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

8. [服務器] 管理gitosis

在服務器直接取出進行配置(配置好後,你也能夠受權給某客戶機賬戶進行管理)

$ cd ~   
$ git clone git@192.168.1.101:gitosis-admin.git   
$ cd gitosis-admin/  
$ ls -al

gitosis.conf是git倉庫與權限配文件,keydir目錄是存放其它客戶機的公匙目錄

$  more gitosis.conf

gitosis.conf 的內容

[gitosis]  
## To override the default ~/repositories path
# repositories = repositories

[group gitosis-admin]  
writable = gitosis-admin  
members = root@localhost.localdomain

8. [服務器] 建立git項目

使用git用戶建立測試項目(不要用root賬戶建立,注意目錄權限)

$ su - git
$ cd /home/git/repositories    
$ mkdir test_project
$ cd test_project
$ git init --bare
$ logout

9. [客戶機] 建立成員的公鑰和私鑰

建立本機公鑰和私鑰

$ ssh-keygen -t rsa -C "yeyingsenlin928@qq.com"

複製客戶機的公鑰到服務器上clone出的gitosis-admin/keydir目錄中

$  scp ~/.ssh/id_rsa.pub root@192.168.1.101:~/gitosis-admin/keydir/yeyingsenlin.pub

10. [服務器] 在gitosis中給客戶機受權

進入服務器上clone出的gitosis-admin目錄中

$ cd ~/gitosis-admin 
$ vi gitosis.conf

在 gitosis.conf 中添加受權配置

[gitosis]  
## To override the default ~/repositories path
# repositories = repositories

[group gitosis-admin]  
writable = gitosis-admin  
#加入了客戶機作爲gitosis管理
members = root@localhost.localdomain yeyingsenlin
#添加一個組 
[group myteam]
#項目倉庫名 
writable = test_project 
#成員名稱要寫上面公匙文件名對應,多個成員可用空格隔開
members = yeyingsenlin

保存配置,將gitosis改動提交到庫

$ git add .  
$ git commit -a -m "Allow yeyingsenlin write access to test_project"  
$ git push origin master

11. [客戶機] 受權後能夠使用git倉庫了

直接操做不須要密碼

$ cd ~  
$ mkdir test_project  
$ cd test_project  
$ echo "testing" > test.txt  
$ git init  
$ git remote add origin git@192.168.1.101:test_project.git
$ git add .
$ git commit -a -m "ok"   
$ git push origin master

換個目錄看可否clone回來

$ cd /tmp  
$ git clone git@192.168.1.101:test_project.git

12. [客戶機] 可受權客戶機管理gitosis

上面已經將yeyingsenlin客戶公鑰加入配置,直接clone倉庫取出 gitosis-admin 便可,對keydir的公鑰及gitosis.conf受權進行管理,與上面服務器方法相同

$ cd ~ 
$ git clone git@192.168.1.101:gitosis-admin.git

13. [服務器] 注意git用戶權限

由於使用gitosis對git進行限制,要保證/etc/passwd裏的git配置爲

$ vi /etc/passwd

找到git (一般在最後面)

git:x:501:501::/home/git:/bin/bash

若是是 git-shell 會操做失敗

完成!

參考:
Github的SSH KEY配置
在centos 下安裝配置基於gitosis 的git 服務
服務器上的 Git - Gitosis
Git遠程操做詳解
git錯誤大彙總

相關文章
相關標籤/搜索