GIT服务器的搭建【gitolite/gitosis版】

前一篇GIT服务器的搭建【简单版】已经基本实现代码的共享,但美中不足的是,没有实现项目代码的权限控制。


本篇简要记录提高安全性能的权限控制,使用gitolite.  (gitosis与gitolite类似,只是早了一些,并且于09年不再更新)

本文的蓝本来自于: http://zengrong.net/post/1720.htm, 在其基础上做细节更新





git默认使用SSH协议,在服务器上基本上不用怎么配置就能直接使用。但是如果面向团队服务,需要控制权限的话,还是用gitolite方便些。

本文的大部分内容来自 https://github.com/sitaramc/gitolite ,但并不是翻译。

本文面向的版本是gitolite v3;所有的操作基于命令行;

gitolite vs gitosis

为什么不用gitosis呢?原因很简单,它已经好几年没有更新了。
gitolite原本是作为gitosis的lite版本出现的,可是现在的功能甚至已经超过gitosis了。
关于gitolite和gitosis的更详细信息,可以看看下面几篇文章:

系统需求

  • 类unix操作系统
  • sh
  • git 1.6.6+
  • perl 5.8.8+
  • openssh 5.0+
    • 一个git用户 (服务器上可以通过各种方式创建,目的于合适管理)
    • 一个openssh公钥 (客户端通过ssh-key -t rsa 创建,默认生成于~/.ssh/id_rsa.pub)

    安装(服务端)

    • 登录到git用户。如果没有给git用户设置密码,可以从root用户通过su切换过去。
    • 确认 ~/.ssh/authorized_keys 不存在
    • 将公钥放在 ~/YourName.pub  (从客户端scp过来,用完后就么用了)
    • 运行下面的命令:
    ? View Code BASH
    1
    2
    3
    4
    5
    6
    7
    8
    
    # 获取版本库
    git clone git://github.com/sitaramc/gitolite
    # 创建bin目录,用于存放安装后的文件
    mkdir -p ~/bin
    # 将gitolite安装到bin目录
    gitolite/install -to ~/bin
    # 使用YourName.pub公钥初始化版本库
    gitolite setup -pk YourName.pub   (YourName.pub完成历史使命,key被cat到服务端的 ~/.ssh/authorized_keys中

    管理用户和版本库

    不应该手动在服务器端加入新的用户或者版本库。
    gitolite使用一个特殊的版本库 gitolite-admin 来管理员用户和版本库,只要在这个版本库中修改并push,服务器就会自动根据配置作出修改。

    首先在客户端迁出版本库:

    ? View Code BASH
    1
    
    git clone git@host:gitolite-admin

    如果在迁出的过程中询问密码,那么说明配置出了问题。一般情况是密钥配置错误。可以检查客户端的~/.ssh 下有没有 YourName 私钥。如果需要使用不同的密钥连接多个ssh服务器,可以编辑~/.ssh/config 进行配置。

    进入 gitolite-admin 目录,其中的 keydir 目录是用来放置用户公钥的,而 conf/gitolite.conf则是用来配置用户和版本库。

    编辑 conf/gitolite.conf如下:

    @admin = smith

    @developer = david, bob

    repo foo
        RW+         =   alice
        RW          =   @developer
        R           =   carol
    

    上面的配置的含义是:

    • 定义两个用户组,admin和developer
    • 有一个名为 foo 的版本库;
    • 用户 alice 对它有读、写、删除权限;
    • 用户组 developer 对它有读写权限;
    • 用户 carol 对它仅有只读权限。
    • 另外,需要找 alice/bob/carol 用户索要他们的公钥,保存在 keydir 目录中,命名为alice.pub/bob.pub/carol.pub,然后提交这些改动, push 到服务器。
    • 多用户有定义方式,1)keydir/alice.pub keydir/ubuntu/alice.pub keydir/windows/alice.pub可以表示用户alice的三个不同的public key   2)keydir/alice@ubuntu.pub 和keydir/alice@windows.pub   3)邮件地址形式。推荐使用方式 1

    服务器会自动将公钥加入到 ~/.ssh/authorized_keys 中,并创建 foo 版本库。

    foo 版本库的访问地址为 git@host:foo

    如果希望把 foo 版本库放在 bar 目录下,可以这样编辑配置文件:

    repo bar/foo
        RW+         =   alice
        RW          =   bob
        R           =   carol
    

    此时foo 版本库的访问地址为 git@host:bar/foo

    SSH带端口访问

    git clone ssh://git@192.168.0.100:2234/testing.git

    使用ssh-copy-id 设置无密码登陆git服务器



    更多内容


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值