创建带权限控制的git server(使用gitolite)
创建带权限控制的git server(使用gitolite)以ubuntu16为平台,软件包全部使用apt安装,非常省心。小型企业可以参照搭建一个可用于实际生产的git版本控制系统。权限控制使用gitolite,配置简单。请以纯系统在虚拟机中测试本文档。一、安装好ssh服务器、准备好git用户账号1. 安装ssh服务器sudo apt install openssh-serve
·
创建带权限控制的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 git
2. 安装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/gituser
2. 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-admin
3.配置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密钥;
点击“确定”按钮;
如果对你有用,请赞助我一点咖啡豆
更多推荐
已为社区贡献2条内容
所有评论(0)