系统:centos7linux
服务器:阿里云git
1、前期准备github
1.安装git算法
yum install git
2.安装perl vim
yum install perl
3.安装openssh windows
yum install openssh
4.安装cpan(若是你的linux里面没有,就必须安装)centos
yum install cpan
5.准备两个用户(这两个用户能够是自定义的,而且他们相互之间没有读取对方目录的权限,否则会绕过gitolite,在执行update的hook的时候报环境变量的错误),这里为了好区分就用git和gitadmin。服务器
useradd git
passwd git
useradd gitadmin
passwd gitadmin
这两个命令的做用分别是添加用户和为改用户设置密码ssh
2、配置步骤post
1.首先切换到gitadmin登陆
su gitadmin
2.在gitadmin这个用户下生成公钥和秘钥
ssh-keygen
执行该命令后,公钥和密码会默认为rsa算法,而且保存在该用户的.ssh目录下,也就是/home/git/.ssh/id_rsa。
若是想查看生成的公钥和秘钥能够执行cd /home/git/.ssh/,id_rsa就是秘钥,id_rsa.pub就是公钥
3.把gitadmin的公钥复制出来
cp id_rsa.pub tmp/gitadmin.pub
这里复制的目的是为了等下切换git用户能够设置该公钥为具备管理git仓库权限的公钥,因此这里就直接放在tmp目录下了。
官方规范,把公钥的名字设为用户的名字,以便区分。
4.这里切换git用户
su git
这里的git用户主要是用来放git仓库和设置管理员的权限的。
确保~/.ssh/authorized_keys
是空的或不存在的,authorized_keys是用来存储全部使用gitolite的用户的公钥的
5.切换到该用户的用户目录并安装gitolite
cd
git clone https://github.com/sitaramc/gitolite
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin
而后设置git的管理员,也就是咱们的gitadmin
$HOME/bin/gitolite setup -pk /tmp/gitadmin.pub
到这里gitolite和管理员已经设置完成了
3、添加用户和推送配置
gitolite的全部添加仓库和用户还有设置权限都要经过gitadmin来推送,配置才能生效。
1.如今切换回gitadmin用户
su gitadmin
而后回到gitadmin的用户目录,为了是把等下克隆的gitolite的管理仓库,直接放在用户目录下便于查找
cd
2.克隆在gitolite管理配置
git clone git@127.0.0.1:gitolite-admin这个地址格式要注意规范,地址写127.0.0.1是由于在同一台服务器,若是想用其余服务器能够更换地址。
特别要注意的是不能写成
git clone git@127.0.0.1:/home/git/repostories/gitolite-admin,这样的写法也能克隆到项目,可是并非经过gitolite来触发的。
绕过gitolite的后果会致使后面推送的时候触发update.pm这个hook报环境变量错误。若是没有成功地使用gitolite来克隆项目,是会提示你要输入这个帐号的密码。
当出现密码提示的时候,请返回查看以前的操做步骤有没有遗漏,不然,后面的不少操做都没法实现。
由于咱们前面已经为gitadmin配置了管理权限的公钥,理论是能够直接克隆成功的。
3.打开gitolite-admin
cd gitolite-admin
会看到有conf和keydir两个文件夹
conf用来添加或删除仓库,还有配置用户的分组还有每一个用户/分组的读写执行权限,查看权限操做能够直接日后拉。
keydir用来保存每一个使用gitolite的用户的公钥,推送成功后,会在git用户的authorized_keys生成对应公钥。
3、使用gitolite的来管理用户的权限
1.打开另外一台客户端(我本机使用的是windows系统)
直接输入
ssh-keygen
大回车连续啪啪啪三次,就会在你C盘用户目录的.ssh文件夹下面生成一对公钥秘钥
2.把公钥移到服务器端gitadmin用户的keydir目录中。
这里有两种方法能够用:
1)下一个winSCP,直接把文件拖过去。记得改一下名字,如:waldon.pub
2)直接在客户端使用命令
scp C://Users/waldon/.ssh/id_rsa.pub gitadmin@host:/home/gitadmin/gitolite-admin/keydir/waldon.pub
这里host是你服务器的ip地址,waldon是我本机的用户名。
提示输入gitamdin的密码后,就会看到上传公钥到服务器成功了。
3.咱们再切回root用户,建立一个新用户叫waldon。这个用户名要和你公钥的名字一致
su root
useradd waldon
passwd waldon
4.切换回gitadmin,打开conf文件夹,编辑gitolite.conf文件
su gitadmin
cd /home/gitadmin/gitolite-admin/conf
vim gitolite.conf
5.为用户配置权限
在gitolite-admin仓库下添加刚刚配置的用户waldon
repo gitolite-admin
RW+ = gitadmin waldon
按esc而后:wq保存退出
6.推送配置到git服务器
1)cd /home/gitadmin/gitolite-admin 回到gitolite-admin文件夹下
2)git status 查看当前仓库的变化,这里应该会显示keydir/waldon.pub 和 conf/gitolite.conf 两个变动文件
3)git add . 添加全部变更
4)git commit -m "这里的提交注释随便填" 提交全部变更
5)git push 推送配置,若是不想看到出现的警告,也能够用git push -u origin master 来具体到推送分支
若是对这里的命令不熟悉能够去看看git的相关命令,若是出现要你配置邮箱和用户名的提示,按他提示的格式输入便可。
7.切换回git用户,查看配置是否成功。
su git
cd /home/git/.ssh
cat authorized_keys
当秘钥出现新的用户,就表明新增用户成功了。
最后是一些简单的仓库权限配置,gitolite大部分的权限配置只是针对推送的。git的原意就是开源,分享代码,gitolite的出现已经很变态了,若是还想控制其余人读取代码目录的
权限,那仍是用SVN吧。
全部的一切操做,除了切换用户,都是不须要密码的,由于秘钥会自动匹配,若是出现了须要密码的操做,有多是你绕过了gitolite,
会形成钩子触发失败的操做,从而致使推送失败。