在centos 下安装配置基于gitosis 的git 服务

本文详细介绍如何在CentOS 6.2系统上搭建Git服务,包括安装OpenSSH、生成密钥、安装Git服务器及配置过程,并通过Gitosis进行权限管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言 这里我用的系统是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


换个目录看能否clone回来
$ cd /tmp
$ git clone git@10.0.2.8:test_project.git //此时应该不会提示输入ssh密码的


最后大功告成...


2016/05/03 更新

有更简单一点的,用GitLab版本管理,参考:http://www.cnblogs.com/wintersun/p/3930900.html




                
Git是非常著名的分布式版本控制系统。 Gitosis则是方便通过Git与ssh架设中央服务器的软件。这篇文章的安装流程写得很明了,但使用中还是遇到了些许问题,本文算是该流程的补充。如果打算通过Gitosis架设服务器通过本文或许可以少走不少弯路。 一、架设步骤 1. 下载并安装python setuptools sudo apt-get install python-setuptools 2. 下载并安装gitosis cd ~/src git clone git://eagain.net/gitosis.git cd gitosis python setup.py install 3. 添加用户git sudo adduser \ --system \ --shell /bin/sh \ --gecos 'git version control' \ --group \ --disabled-password \ --home /home/git \ git 4. 生成本机密钥 切换到个人机,如果已有~/.ssh/id_rsa.pub略过此步 ssh-keygen -t rsa 5. 上传密钥到服务器临时目录 scp ~/.ssh/id_rsa.pub 用户名@主机:/tmp 6. 初使化gitosis 切回到服务器 sudo -H -u git gitosis-init < /tmp/id_rsa.pub 7. 修改post-update权限 sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update 8. clone gitosis管理平台 git clone git@主机名:gitosis-admin.git cd gitosis-admin 9. 安装完成 通过修改gitosis-admin管理gitosis用户权限 添加公密到keydir,添加用户 修改完后commit,push到中服务器即可完成仓库权限的相关操作。 二、实例 目标:添加用户 john 和仓库 foo 到gitosis,并和管理员miao合作管理 1. 用户john添加并发送id_rsa.pub给miao john:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/john/.ssh/id_rsa): Created directory '/home/john/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/john/.ssh/id_rsa. Your public key has been saved in /home/john/.ssh/id_rsa.pub. john:~$ cp /home/john/.ssh/id_rsa.pub /tmp
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值