创建带权限控制的git server(使用gitolite)

来源:互联网 发布:淘宝尺码怎么设置 编辑:程序博客网 时间:2024/06/05 17:42

创建带权限控制的git server(使用gitolite)

以ubuntu16为平台,软件包全部使用apt安装,非常省心。
小型企业可以参照搭建一个可用于实际生产的git版本控制系统。
权限控制使用gitolite,配置简单。
请以纯系统在虚拟机中测试本文档。

一、安装好ssh服务器、准备好git用户账号

1. 安装ssh服务器    sudo apt install openssh-server    安装完成即可,不需要做任何配置。这里ssh服务器ip是192.168.11.202;2. 创建用于管理git数据的用户    sudo adduser gituser    在git服务器上,只需要一个管理git数据的操作系统用户账号;    git库中的用户账号不需要在系统中创建,由gitolite管理,简单。3. 测试连接到ssh服务器    在客户端运行 ssh gituser@192.168.11.202    此时输入gituser的密码应该可以登录

二、服务器上安装git和gitolite

1. 安装git    服务器上默认已经安装了git,如果未安装执行下面的    sudo apt install git2. 安装gitolite    sudo apt install gitolite3    安装过程中要求输入管理员的key,不用输入,安装完成后再配置;

三、配置gitolite

1. 准备gituser的ssh证书    在client系统中运行ssh-genkey,生成的key有两个,一个公钥一个私钥,    私钥留在client系统中,公钥要送到git服务器中(即ssh服务器),做ssh登录使用。    运行ssh-genkey时询问证书名称,我们输入gituser,默认名称是id_rsa,    保存在目录~/.ssh/id_rsa,因为我们在生成时输入了gituser,那么证书生成在当前目录    我们将证书移动到 .ssh 目录    mv gituser ~/.ssh/    mv gituser.pub ~/.ssh/    chmod 600 ~/.ssh/gituser #ssh客户端对私钥会进行权限检查,如果权限不对,会拒绝使用私钥    不要惧怕证书,一般证书都是成对使用,公钥在服务器,私钥在客户端电脑;    用证书完全不需要设置密码,而且传送都是加密的,很好用;2. 拷贝公钥到git服务器    scp ~/.ssh/gituser.pub gituser@192.168.11.202:~/3. 配置gitolite    3.1 现在我们回到server系统,切换到gituser        su gituser    3.2 运行gitolite设置        gitolite setup -pk ~/gituser.pub        运行下面的内容可以看到gitolite把pub添加了authorized_keys文件中        vim ~/.ssh/authorized_keys

四、通过gitolite管理项目和用户

1. 定义好client的ssh客户端    定义好之后,直接通过证书登录,不需要输入用户名和密码,gitolite只使用证书登录方式;    回到client系统上,编辑 ~/.ssh/config 文档;    gedit ~/.ssh/config    加入如下内容    host gitserver        HostName    192.168.11.202        port        22        IdentityFile    ~/.ssh/gituser2. clone gitolite的管理库    gitolite hook了ssh服务,当我们用ssh push git库时,它的hook先处理请求;    因此它使用一个git库来做管理gitolite配置的方式,当我们push gitolite的管理库时,    它根据库的内容,创建库、用户;由于它hook了ssh,如何对任何库的读写都经过它,    因此,它可以根据管理库的设置进行权限控制;    要注意的是,使用gitolite管理git server时,不要再git server上手动创建库;    所有库由gitolite自动管理,所有库位于gituser用户的~/repositories 目录中;    clone任何项目时,不要使用绝对路径,否则gitolite的hook不能正常处理;    还有,库名称后面不要加.git    cd ~    git clone gituser@gitserver:gitolite-admin3.配置gitolite    3.1 增加用户        用ssh-genkey生成公钥和私钥,公钥名称改为“用户名.pub”,比如添加用户tom,文件名就是        tom.pub        放到 keydir 目录        然后git commit,git push,gitolite的hook在提交后,会将pub中的key内容添加到        gituser用户的~/.ssh/authorized_keys 文件中        tom配置自己的ssh客户端        tom中自己的电脑中运行        gedit ~/.ssh/config        加入            host    gitsvr                HostName        192.168.11.202                port            22                IdentityFile    ~/.ssh/tom        然后可以使用下面命令clone        git clone gituser@gitsvr:testing        tom查看自己在该git server的库权限        ssh gituser@gitsvr info    3.2 增加git库以及定义gitolite的权限        官方说明文档:[gitolite doc](http://gitolite.com/gitolite/gitolite.html)        实现这些都是通过编辑 conf/gitolite.conf 文件来实现的,        如果在该文件中新定义了git 库,git push的时候,hook就会自动在        gituser用户的~/repositories 目录中创建一个 git 库;

五、git用户使用客户端

上面配置时创建了tom用户,以及说明了tom如何在自己的电脑上配置ssh客户端下面说明windows中TortoiseGit客户端中如何操作1. 准备私钥    TGit(TortoiseGit),推荐是PuTTY来处理ssh连接;    1.1 如果我们已经有ssh生成看到key        我们需要把ssh的key转为PuTTY的key        按windows按键,输入puttygen;        选择菜单“Conversions”->“Import Key”,选择sshkey(必须是私钥);        “key comments”中输入证书的说明文字,方便以后识别,比如我输入gituser,表示是gituser的证书;        然后点击“Save Private Key”,保存到文件;    1.2 如果还没有key        运行“Git Bash Here”        运行“ssh-keygen”,按提示生成,然后再按上面的说明转成putty的key;2. clone出项目    打开TGit的克隆,    URL:gituser@192.168.11.202:gitolite-admin    加载Putty密钥选择上面生成的ppk密钥;    点击“确定”按钮;

如果对你有用,请赞助我一点咖啡豆
请我喝咖啡吧

0 0
原创粉丝点击