Centos 7 搭建git服务器及使用gitolite控制权限
一、安装git
yum install git
git --version #查看git版本
二、升级git(可选,如果之前已经安装git,需要升级git到最新版本)
git clone https://github.com/iuscommunity/automation-examples cd automation-examples/ git checkout bash sudo ./enable-ius.sh sudo yum swap git git2u
三、添加并切换到git账户
useradd git
su git
四、生成git账户对应的RSA密钥用于管理仓库
ssh -keygen -t rsa #一路回车,默认生成密钥位置为/home/git/.ssh目录 cd /home/git/.ssh mv id_rsa.pub admin.pub #将生成的公钥文件改名为admin.pub
五、安装gitolite
cd /home/git git clone git://github.com/sitaramc/gitolite mkdir -p $HOME/bin gitolite/install -to $HOME/bin 如果安装报错,则根据提示安装相应的依赖后重新(gitolite/install -to $HOME/bin)
六、配置gitolite
cd /home/git/.ssh $HOME/bin/gitolite setup -pk admin.pub 完成后 cd /home/git ls 可以看到多了一个repositories文件夹,打开repositories可以看到两个仓库gitolite-admin.git和test.git 看名称就知道干什么用的;下面我们主要对gitolite-admin.git仓库进行操作,就可以管理服务器上的全部仓库了。
七、管理用户权限及仓库
cd /home/git git clone git@服务器IP:gitolite-admin 完成后cd到clone下来的gitolite-admin目录中,可以看到conf、keydir keydir目录就是用来放所有客户端用户的pub文件的 conf目录就是用来配置仓库、用户、用户组权限的 cd conf vim gitolite.conf 可以看到以下配置信息: repo gitolite-admin RW+ = admin repo testing RW+ = @all 创建用户组 @组名 = admin lisi zhangsan 与keydir中的公钥名相同 创建仓库 repo demo(即仓库名/项目名) 配置权限 RW+ = @用户组/用户名 多个空格隔开 提交更新 cd /home/git/gitolite-admin git add . git commit -am 'update msg' git push origin master(首次需要根据提示配置email、name) 【以后每次新增仓库、修改权限、更新用户、用户组都得在这个clone的项目下conf中配置然后push到仓库服务器,用户的pub文件上传至keydir目录即可,以用户名命名好区分】 push完后可以看到/home/git/repositories新创建的仓库
八、客户端生成公钥发送管理员
windows下: 某一文件夹下鼠标右键,Git Bash Here 输入ssh -keygen -t rsa 一路回车生成密钥对 默认C:\Users\Administrator\.ssh下id_rsa.pub 更改名称,比如:id_rsa.pub然后发送给管理员,管理员上传至gitolite-admin下的keydir目录,conf下的gitolite.conf配置用户权限,需要跟pub文件名称保持一致,然后add commit push
九、客户端克隆项目验证权限是否成功
git bash方式:直接git clone git@服务器IP:项目.git即可 TortoiseGit方式: 需要配置密钥信息,否则会提示权限错误 1、打开TortoiseGit安装目录下的bin目录,打开puttygen.exe,点击load 选择之前生成的私钥,然后点击”save private key“保存成ppk文件。 2、打开TortoiseGit的Settings,点击左侧Git,然后点击右面板的全局配置 设置name为刚刚修改发给管理员的名称,点击保存。 3、系统菜单栏中点击TortoiseGit目录下的Pageant,右下角多出一个图标,点击图标,点击add key选择刚刚保存的ppk文件关闭窗口即可 4、clone项目(url:git@IP:项目名.git)也可在TortoiseGit的clone面板操作步骤3,有个load Putty Key