使用Gitolite建立远程git仓库

思路

1.在ubuntu 服务器上建立一个专门用于git管理的git用户。
2.在本地利用ssh-keygen 命令创建一个ssh 的公私钥,用于对git的用户和仓库的创建和删除,以及权限的管理
3.ubuntu服务器上安装gitolite
4.权限配置

创建git用户
    # su root // 切换到root用户
    # adduser --system --shell /bin/bash --group git //创建用户和用户组
    # passwd git  //配置密码
创建公私钥
    // 在本地终端,例如gitbash终端
    # ssh-keygen -t rsa -C "[email protected]"
    // 会提示输入创建的文件名,例如rolosiro_rsa
    // 会提示passphrase 的密码,这个是用来登陆时验证的秘密,我们要进行免登录操作,故直接敲回车设置密码为空
    // 操作完成后会生成rolosiro_rsa和rolosiro_rsa.pub两个密钥,前者是私钥需要保存在我们的客户端,后者是公钥需要上传到服务器上

将创建好的rolosiro_rsa.pub通过xftp5上传到ubuntu服务器,例如放在/home/gitkeydir目录下

安装gitolite

可以参照gitolite官网文档进行安装

     # su - git
     # mkdir -p ~/bin
     # git clone git://github.com/sitaramc/gitolite
     # gitolite/install -ln
     # gitolite setup -pk /home/rolosiro_rsa.pub
     //  /home/rolosiro_rsa.pub是上一部我们创建好的公钥保存在ubuntu服务器下的路径,这样默认会场景一个yolosiro用户用于管理gitolite,相当于gitolite的管理员,利用这个管理员来创建用户和仓库

安装完成后,默认会创建两个仓库,一个是gitolite-admin ,一个是testing。
gitolite-admin 仓库是我们用来管理gitolite的仓库,包含两个文件夹 conf/ 和 keydir。
conf/gitolite.conf文件用来创建仓库和权限配置,keydir用来存放用户的公钥

权限配置
    // 在本地的gitbash终端,对ssh进行配置
    // 将上面生成的rolosiro_rsa 和rolosiro_rsa.pub拷贝到gitbash的用户目录下的.ssh/文件夹下面
    # cd ~/.ssh/
    # ls
        rolosiro_rsa rolosiro_rsa.pub
    // 配置ssh
    #vim config
        ------------------------------
        Host git.yolosiro  // 别名
        HostName  10.10.10.10 // ubuntu 服务器地址
        User git        // 之前在ubuntu服务器上创建的用来操作gitolite的用户
        identityFile /c/user/rolosiro/.ssh/rolosiro_rsa // 保存的私钥的路径,这个用来告诉ssh本地的私钥地址,ssh发送过来信息后就会利用这个私钥来进行验证和解密信息。
        -------------------------------
     # cd ~/gitsource   // 本地存放git仓库代码的目录
     # git clone [email protected]:gitolite-admin // 克隆gitolite-admin仓库到本地,我们就可以在本地对gitolite进行管理了。


     // 下面我们创建一个仓库yolosiro和一个用户dev_user1
     // 创建dev_user1,需要先利用ssh-keygen生成dev_user1的公私钥,可以在另外一台电脑上生成,这里我们在同一台电脑上生成
     # ssh-keygen -t rsa -C "[email protected]"
         // 和之前创建rolosiro一样
         ...
         ...
         // 生成文件 dev_user1 和dev_user1.pub
     //将dev_user1.pub复制到本地gitolite-admin仓库的keydir目录下
     # cp dev_user1.pub ~/gitsource/gitolite-admin/keydir/dev_user1.pub
     这样我们就创建好了一个用户

    // 创建仓库和权限管理
    # cd ~/gitsource/gitolite-admin/conf
    # vim gitolite.conf
        -----------------------------------
         repo gitolite-admin
            RW+     =   rolosiro

         repo testing
            RW+     =   @all

         repo yolosiro
            RW+     =  rolosiro dev_user1
       -----------------------------------
     // 提交修改,并push到远程仓库
     // 这样就制定dev_user1 和rolosiro对仓库yolosiro拥有读写权限了。我们就可以利用dev_user1和rolosiro两个用户来使用yolosiro仓库了。 
     # git add .
     # git push origin master
本地拥有多个ssh的key时

例如,上面我们是在本地创建的rolosiro和dev_user1用户,我们目的是使用rolosiro来对gitolite的用户和仓库的权限进行管理;而同时我们又想使用dev_user1来开发yolosiro这个仓库。操作很简单,利用config文件中的别名

    # cd ~/.ssh
    # vim config
        ----------------------------------------------
        Host gitadmin.yolosiro  // 使用这个来管理
        HostName  10.10.10.10 // ubuntu 服务器地址
        User git        
        identityFile /c/user/rolosiro/.ssh/rolosiro_rsa 

        Host gitdev.yolosiro  // 使用这个来开发
        HostName  10.10.10.10 
        User git        
        identityFile /c/user/rolosiro/.ssh/dev_user1
        ---------------------------------------------
        # cd ~/gitsource/
        # git clone [email protected]:gitolite-admin
        # git clone [email protected]:yolosiro

你可能感兴趣的:(git)