客户端:
在此为方便测试,就不再另外创建用户,直接使用客户端root用户即可生成密钥对,注意,此处生成的密钥队需要和用于ssh链接的密钥对区别开来。
cd /root
ssh-keygen -f ~/.ssh/oreki
将生成的公钥(my.pub)上传到服务器的以备用
scp ~/.ssh/oreki.pub drpeng@ip:~
为以后方便登陆git服务器,需要配置一个访问git服务器时的配置文件
vim ~/.ssh/config
host gitolite #git服务器别名
user git #服务端管理gitolite的用户
hostname ip #git服务器的主机名
port xxx #访问git服务器时的端口号
identityfile ~/.ssh/oreki #访问git服务器时使用的公钥文件,即刚才生成的私钥
保存退出
chmod 600 ~/.ssh/config
服务器端:
安装git和gitolite
CentOS7的yum源中包含git安装包,可以直接yum- y install git
进行安装。然后增加drpeng用户用来管理gitolite,通关gitolite实现对git和git所有用户的权限管理
1.使用root用户登陆服务器,并创建git用户,用以管理git server
useradd -g root -s /bin/bash drpeng
echo "gitadmin" | passwd git --stdin
2.切换到drpeng用户,并确保~/.ssh/authorized_keys文件为空或者不存在
3.在drpeng用户下安装gitolite:
git clone git://github.com/sitaramc/gitolite #下载gitolite软件
mkdir -p $HOME/bin
gitolite/install -to $HOME/bin #安装gitolite
export PATH=$PATH:$HOME/bin
echo "PATH=$PATH:$HOME/bin" >> .bashrc
gitolite setup -pk /tmp/my.pub #将客户端的root用户配置为git的管理员
上面的步骤完成后,我们可以在$HOME下看到一个repositories目录,里面有两个仓库,分别为gitolite-admin.git和testing.git,其中gitolite-admin.git为管理仓库。
返回客户端,在客户端通过root用户克隆gitolite-admin库
git clone gitolite:gitolite-admin
进入gitolite-admin仓库,会看到两个目录,分别为keydir和conf,其中keydir目录用来管理用户,在其中可以看到默认有一个文件叫做admin.pub,正是我们之前生成的管理用户的公钥文件,如果需要新增git用户,需要得到新增用户的公钥,放入此文件夹中。conf文件中有一个名为gitolite.conf的文件,管理员可以通过修改此文件来控制git服务器所有用户的权限
Bonus:
附1:Git基本操作教程
http://www.yiibai.com/git/
附2:Gitolite权限设置教程
https://git-scm.com/book/zh/v1/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-Gitolite