zoukankan      html  css  js  c++  java
  • git权限管理工具gitolite使用笔记(一)

    git安装完毕后只是一个简单的版本控制,还没有权限管理,常用git权限管理工具有gitosis和gitolite,后者是在前者基础上改进而来,这里我安装gitolite
     
    gitolite最终要实现的目标:
    1、通过远程连接能够对服务器上仓库进行读写操作;
    2、安全的权限管理,最小化的配置;一般连接服务器都是用key控制。
    3、通过同一个用户名,不同的key来划分权限,拥有此key和用户名无法登陆服务器,服务器通过一个管理员key登陆。
     
    官方文档里的一句话: Gitolite does not do authentication. It only does authorisation. gitolite 不进行身份验证,仅是授权。
    $ cd /home/git/
    $ git clone git://github.com/sitaramc/gitolite
    $ mkdir bin ##文档要求,gitolite在家目录要有bin文件夹,或者自己指定,我选择创建家目录下bin目录
    $
    gitolite/install -ln

    此时发现 /home/git/bin/ 目录下多了软连接。

    $ ls -la
    total 0
    lrwxrwxrwx  1 git users 31 May 27 16:28 gitolite -> /home/git/gitolite/src/gitolite

    git用户下重新生成一个key,区别于上一篇文章中git私有key,前面的key用来用户登录,去服务器端管理,现在生成的key是作为gitolite的管理员key。

    $ ssh-keygen -t rsa -f ~/.ssh/git_admin
    $ cd bin
    $ ./gitolite setup -pk /home/gita/.ssh/git_admin.pub
    初始化空的 Git 版本库于 /home/git/repositories/gitolite-admin.git/
    初始化空的 Git 版本库于 /home/git/repositories/testing.git/

    此时gitolite 配置成功。如果出现如下错误,说明你在使用和登录用的同一个key。

    WARNING: keydir/git_key.pub duplicates a non-gitolite key, sshd will ignore it
    查文档,说不能使用登录用的keypair,需要重新生成ssh的keypair,原因如下:
    1、前面的设置一般情况下是通过ssh连接到服务器,故需要用户名(即git)和key(通过ssh-keygen 命令生成),因为此key可直接登录服务器,不适合做git管理员
    2、在 ~/.ssh/authorized_keys 里,git授权的格式和ssh授权的格式不同,做了扩展,无法通用。
    我这样操作了一次,想回退上面的命令发现失效,按照文档说的去做(文档写的是直接重新执行,就会覆盖)也是失效的,删掉gitolite,重新操作一遍
    发现最主要的配置在 $HOME/.gitolite 和 $HOME/.gitolite.rc 不删掉还是会出现上面的错误,一并删掉,连同repositories。
     
    此时查看 .ssh/authorized_keys 授权文件。
    $ cat /home/git/.ssh/authorized_keys
    ssh-rsa ************************************** git@namenode
    # gitolite start
    command="/home/git/gitolite/src/gitolite-shell git_admin",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa ***************************** git@namenode
    # gitolite end
     
    开始配置管理员:
    Strictly speaking, gitolite doesn't know where users come from. 官方文档的一句话 “ 严格来说gitolite不知道用户从哪里来 ” 。
    不要手动的在服务器上添加用户或仓库,gitolite是通过对gitolite-admin这个仓库的操作来进行管理的。
    在eclipse 上clone下来服务器端的gitolite-admin.git ,这里颇费了一番周折。
     
    官方要求:
    1、客户端的key需要是git的管理员key,即上面的 git_admin 。
    2、clone时,git仓库需要写相对路径,相对于repository。
     
    故,最终的路径为: ssh://git@我的ip:端口/gitolite-admin.git 。
    我的eclipse已经设置过ssh,并且将git_key导入到ssh配置中,具体参看第一篇文章 “git 安装笔记”,注意这里是git_key 即用户私有key,不是管理员key git_admin。
    在eclipse的egit插件中,使用如下设置,点next,最终success。 经过测试 clone 和 pull 正确,具体内容在“git权限管理工具gitolite使用笔记(二)”。
     
     
     
     
    补充一下安装使用过程中出现的问题。
     
    错误一:WARNING: Can't exec "git": Permission denied at /home/git/gitolite/src/lib/Gitolite/Common.pm line 144, <DATA> line 1. 
    这是由于安装时没有指定  prefix=/usr/local ,导致无法找到命令,解决方案,重新指定;或者增加软连接,但是不建议,因为后续会出现一系列各种奇怪的问题。建议重装,指定 prefix=/usr/local
    $ cd /usr/bin 
    $ ln -s /home/server/git/git git 
     
  • 相关阅读:
    Windows 上如何安装Sqlite
    StringBuffer类讲解
    Android Debug Bridge(adb)百度
    0117调试 (Logout调试)
    android cmd adb shell 出现 Device offline的状态下
    菜鸟:为什么要用不同的包 android
    0105Activity+Intent
    adb shell 后感
    0116sqlite
    iptables
  • 原文地址:https://www.cnblogs.com/seanvon/p/gitolite.html
Copyright © 2011-2022 走看看