在centos 下安装配置基于gitosis 的git 服务
前言 这里我用的系统是centos 6.2,
在服务器上的准备工作(服务器IP为10.0.2.8 ):
1、安装 openssh服务器与客户端工具
- $ sudo yum install openssh-server openssh-client
2、创建个人公钥和私钥(用于后面的git服务的管理员管理)
在默认用户的主目录路径下,运行以下命令,按照提示创建公钥和私钥
- $ ssh-keygen -t rsa
默认生成2048位,如果需要提高安全级别,也可以通过下面的命令创建公钥和私钥
- ssh-keygen -t rsa -b 4096
默认情况下,公钥和私钥会保存在~/.ssh目录下,如下所示:

3、安装 git服务器
- $ sudo yum install git-core
4、配置 git服务器
创建git服务器管理用户
- $ sudo useradd -m git
- $ sudo passwd git
创建git仓库存储目录
- $ sudo mkdir /home/git/repositories
设置git仓库权限
- $ sudo chown git:git /home/git/repositories
- $ sudo chmod 755 /home/git/repositories
初始化全局设置
- $ git config --global user.name "myname"
- $ git config --global user.email "myname@server"
5、安装python的setup tool
- $ sudo yum install python-setuptools
6、获取并安装gitosis
- $ cd /tmp
- $ git clone git://eagain.net/gitosis.git //测试时从这拿不到,可换成 git clone https://github.com/res0nat0r/gitosis.git
- $ cd gitosis
- $ sudo python setup.py install
7、配置gitosis
- $ cp ~/.ssh/id_rsa.pub /tmp //上面第2步生成的公匙
- $ sudo -H -u git gitosis-init < /tmp/id_rsa.pub //将该公匙导入gitosis里,这时本机已经有了为git的管理权限了
- $ sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
为了git操作时不用输入密码,还要做以下配置
- $ cat /tmp/id_dsa.pub >> /home/git/.ssh/authorized_keys //将root的公匙导入到git目录的 authorized_keys文件中
- $ chmod 600 /home/git/.ssh/authorized_keys
8、管理gitosis配置
- $ cd ~
- $ git clone git@hostname:/gitosis-admin.git
- $ cd gitosis-admin/
- $ ls -al
看到以下结果

gitosis.conf是git仓库与权限配文件,keydir目录是存放其它客户机的公匙目录。
- $ more gitosis.conf
gitosis.conf 对应的内容
- [gitosis]
- [group gitosis-admin]
- writable = gitosis-admin
- members = root@localhost.localdomain
来这里git的服务已基本配置完毕,但要团队开发中用起来还要进以下配置:
在成员机(ip=10.0.2.100)上操上面第1与第2步生成自已的公匙,
- $ scp .ssh/id_rsa.pub root@10.0.2.8:~/gitosis-admin/keydir/tester.pub //将本机的公匙copy到gitosis的keydir中
再切换到git服务上(ip=10.0.2.8)
- $ cd ~
- $ cd gitosis-admin
- $ cat keydir/tester.pub >> /home/git/.ssh/authorized_keys //将tester的公匙导入到git目录的 authorized_keys文件中
- $ vi gitosis.conf
修改gitosis.conf
- [gitosis]
- [group gitosis-admin]
- writable = gitosis-admin
- members = root@localhost.localdomain
- #加一个组myteam
- [group myteam]
- members = tester #这里的tester对上面公匙文件名
- writable = test_project #项目仓库名
提交到版本库
- $ git add keydir/tester.pub
- $ git commit -a -m "Allow tester write access to test_project"
- $ git push origin master
这时tester便有权限操作test_project仓库了,回到成员机(ip=10.0.2.100)上
- $ cd ~
- $ mkdir test_project
- $ cd test_project
- $ echo "testing ">test.txt
- $ git init //初始化本地版本
- $ git remote add origin git@10.0.2.8:test_project.git //加到远程版本库中
- $ git add .
- $ git commit -a -m "哈哈哈,测试一下"
- $ git push origin master
也可以把上面的两步合成一步
$ git push git@xxx:project1.git master
说明:如果在执行 git push origin master 的时候,提示以下错误: error: src refspec master does not match any. error: failed to push some refs to 'git@192.168.0.77:pro2.git' 这是由于项目为空的原因,我们在项目目录里新创建一个文件。经过->add -> commit -> push 就可以解决了
$ touch a.txt
$ git add a.txt
$ git commit -a -m 'add a.txt'
$ git push
换个目录看能否clone回来
- $ cd /tmp
- $ git clone git@10.0.2.8:test_project.git //此时应该不会提示输入ssh密码的
error: cannot run ssh: No such file or directory - cygwin git
”错误,则表示本机没有安装ssh命令。安装方法请参考:http://blog.haohtml.com/archives/13313 有时候我们要更换电脑来重新开发项目。这个时候,只需要将id_rsa私钥放在home目录里的.ssh目录里就可以了。(有时候一个人开发多个项目,这时候可能会提示id_rsa文件已经存在。不太清楚这里如何解决???)
常见问题
首先确定 /home/git/repositories/gitosis-admin.git/hooks/post-update 为可执行即属性为 0755
1. git操作需要输入密码
- 原因
- 公密未找到
- 解决
- 上传id_rsa.pub到keydir并改为'gitosis帐号.pub'形式,如miao.pub。扩展名.pub不可省略
2. ERROR:gitosis.serve.main:Repository read access denied
- 原因
- gitosis.conf中的members与keydir中的用户名不一致,如gitosis中的members = foo@bar,但keydir中的公密名却叫foo.pub
- 解决
- 使keydir的名称与gitosis中members所指的名称一致。 改为members = foo 或 公密名称改为foo@bar.pub
在centos 下安装配置基于gitosis 的git 服务的更多相关文章
- Centos下安装配置LAMP(Linux+Apache+MySQL+PHP)
Centos下安装配置LAMP(Linux+Apache+MySQL+PHP) 关于LAMP的各种知识,还请大家自行百度谷歌,在这里就不详细的介绍了,今天主要是介绍一下在Centos下安装,搭建一 ...
- 阿里云服务器centos下安装配置svn服务器
阿里云服务器centos下安装配置svn服务器 1.安装svn服务器端yum install subversion 从镜像下载安装svn服务器端中间会提示是否ok,输入y,确认安装成功提 ...
- CentOS下安装配置Cacti
cacti简介 随着公司规模扩大,服务器也日渐增多,对服务器集群的网络流量和服务器性能实时监测显得愈发重要.开源阵营中常用有MRTG(MultiRouter Traffic Grapher)--基于S ...
- 在CentOS下安装配置MySQL(转)
今天刚把项目做完,需要马上部署到新到的测试服务器上,于是乎,要在服务器上安装环境,由于好久在linux上部署了,手有些生,比较费劲装完,现在把重要步骤贴出,供自己以后参照.1.首先要看看有没有已经安装 ...
- linux、centos下安装配置vim
---恢复内容开始--- 1.一般情况下安装上centos后,会有vi,没有vim(以后可能会有吧) 如果不确定自己有没有vim,使用命令 rpm -qa|grep vim 查看,如果有的话,会显示三 ...
- centos下安装&&配置redis
一.Redis介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多 ...
- CentOS下安装配置Samba服务器
0 环境介绍 VMWARE12下安装的CENTOS7虚拟机.宿主机为WIN7. 1 离线安装 费了九牛二虎之力,下载各种依赖,还是有问题,转向在线安装. 2 在线安装 虚拟机采用默认的配置: 其次,网 ...
- Centos下安装JDK、Maven和Git
原文地址:https://github.com/eacdy/spring-cloud-book/blob/master/3%20%E4%BD%BF%E7%94%A8Docker%E6%9E%84%E5 ...
- CentOS下安装配置SVN服务器并自动同步到web目录
一.安装 yum install subversion测试是否安装成功 /usr/bin/svnserve --version如提示以下内容,说明已安装成功 svnserve,版本 1.6.11 (r ...
随机推荐
- Markdown博文快速转为微信文章
介绍 技术博文在CSDN上,全是Markdown格式,最近看各位大佬又是个人网站又是个人微信公众号,突然发现: "个人博客小站 + 个人微信公众号 + CSDN + 掘金+ - = 程序员标 ...
- UVA11168 Airport
题意 PDF 分析 首先发现距离最短的直线肯定在凸包上面. 然后考虑直线一般方程\(Ax+By+C=0\),点\((x_0,y_0)\)到该直线的距离为 \[ \frac{|Ax_0+By_0+C|} ...
- 洛谷 P1262 间谍网络
传送门 题目大意:A能揭发B,B能揭发C..某些人可以被收买,如果收买A,那么A,B,C..的情报都可以得到. 求能否得到所有情报,如果可以最少花费多少钱去收买. 题解:tajian缩点 dfs/bf ...
- iis部署网页时应该避免的特殊端口
1 tcpmux 7 echo 9 discard 11 systat 13 daytime 15 netstat 17 qotd 19 chargen 20 ftp data 21 ftp cont ...
- ORACLE 11G负载均衡测试
Oracle 11g R2中,引入了SCAN(Single Client Access Name)的特性.该特性的好处在于,在数据库与客户端之间,添加了一层虚拟的服务层,就是所谓的SCAN IP以及S ...
- Browserify使用指南(转)
让浏览器加载Nodejs模块 目前NPM上有二十多万个NodeJS模块,它们都是通过CMD的方式打包的,除了特定的可以使用CMD模块加载器加载的模块,大部分nodejs模块无法直接使用到浏览器环境中. ...
- maven打war包后无法依赖本地工程的jar包,造成debug时跳到class文件而不是本地java文件
问题现象:项目结构如下 growup-service | - - - - - -growup-api | - - - - - -growup-core | - - - - - -growup-war ...
- ubuntu中配置samba方法
1.在保证能上网的前提下,安装samba软件包,中途出现是否执行,一直点击回车键 #sudo apt-get install samba #sudo apt-get install smbclient ...
- SQL Server 占用CPU较高的解决方法
触发原因:月底系统结账的时候对ERP的操作较多,有用户反馈系统之间的数据传输很久没有同步.随即到服务器上查看,没有发现有程序导致的问题,看了一下CPU的使用率,发现SQL Server占用率在百分之九 ...
- 微信 unionid 获取 解密数据
1.申请注册微信开放平台 open.weixin.qq.com 2.绑定公众号或者小程序到微信开放平台 3.微信公众号的话,使用微信网页授权获取 unionid https://mp.weixin. ...