服务器环境 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错误大汇总