服務器環境 Linux CentOS 6.5 (IP:192.168.1.101)html
客戶機環境 Mac (IP:192.168.1.100)python
本文使用管理員進行操做git
$ sudo yum install git
若sudo碰到以下報錯(無錯忽略這裏):github
sudo: /etc/sudoers is mode 0640, should be 0440shell
直接恢復 /etc/sudoers 權限爲0440便可(須要管理員權限)。centos
$ chmod 440 /etc/sudoers
$ sudo yum install openssh-server openssh-client
賬戶建立後,默認家目錄會在 /home/git
(若設定爲其它目錄請修改路徑)bash
$ sudo useradd -m git $ sudo passwd 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"
安裝 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
默認狀況下,公鑰和私鑰會保存在~/.ssh目錄下
$ ssh-keygen -t rsa
公鑰須要添加到 /home/git/.ssh/authorized_keys
這裏git操做時纔不用輸入密碼,不過請不手動添加進來
,咱們須要使用gitosis
來管理客戶機git權限
注意:之前手動加進去的公鑰是不受gitosis
權限管理的,須要管理就刪除手動加入的,讓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
在服務器直接取出進行配置(配置好後,你也能夠受權給某客戶機賬戶進行管理)
$ 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
使用git用戶建立測試項目(不要用root賬戶建立,注意目錄權限)
$ su - git $ cd /home/git/repositories $ mkdir test_project $ cd test_project $ git init --bare $ logout
建立本機公鑰和私鑰
$ 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
進入服務器上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
直接操做不須要密碼
$ 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
上面已經將yeyingsenlin客戶公鑰加入配置,直接clone倉庫取出 gitosis-admin 便可,對keydir的公鑰及gitosis.conf受權進行管理,與上面服務器方法相同
$ cd ~ $ git clone git@192.168.1.101:gitosis-admin.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錯誤大彙總