1、创建本地机器的公私钥
在本地帐户上生成公私钥,命令如下:
$ ssh-keygen -b 2048
生在的密钥在 ~/.ssh/目录下
2、安装gitolite
#在git用户的目录/homt/git 执行
$ git clone
#当前目录会生成gitolite
$ mkdir bin
$ ./gitolite/install -ln
3、公钥设置
$ ./bin/gitolite setup -pk ~/.ssh/git_admin.pub #本地上传到服务器的pubkey所在路径,git_admin.pub根据根据自己生成的pub名而定
如果根目录下没有“.gitolite/logs/”文件夹,可能会报错
FATAL: errors found but logfile could not be created
FATAL: /home/git/.gitolite/logs/gitolite-2022-04.log: No such file or directory
FATAL: die '/home/git/.ssh/git_admin.pub' not a readable file
自己生成该文件夹
mkdir .gitolite/logs -p
#生成两个仓库
#gitolite-admin.git是用户权限管理的仓库
4、仓库添加与管理
$ git clone git-server:gitolite-admin.git #将 gitolite-admin.git 仓库克隆到本地
本地进入 gitolite-admin目录 中会有如下两个目录 conf keydir
conf/gitolite.conf 用于管理仓库和用户权限,例如下图包含了两个仓库,如果需要添加仓库,只需要按照格式添加,然后推到服务器就可以了
keydir/ 该目录存放了用户的公钥文件,推到服务器后 gitolite 会自动将其权限添加到 ~/.ssh/authorized_keys 文件中
5、修改管理员的公钥
上面设置了 git 账号,所以在这一步中一定要切换到 git 账号才能操作,否则 gitolite 会把配置文件写到其他用户的根目录下。
$ su git
$ gitolite setup -pk new_admin.pub
6、修复管理员的权限
当管理员的权限被破坏后(比如不小心将 RW 权限去掉了),可以登录到服务器,切换到 git 账号,执行下面的命令
$ git clone /home/gitadmin/repostories/gitolite-admin.git
#将管理仓库克隆下来,修改相应的文件(conf/gitolite.conf),然后执行
$ gitolite push # (也可能是 gitolite push -f) , 将修改推送并应用权限即可
如果你碰到类似这样:
FATAL: R any gitolite-admin admin DENIED by fallthru
(or you mis-spelled the reponame)
fatal: Could not read from remote repository.
或是那样的问题时,你把git目录下的.gitolite目录给删除掉
git@ubuntu:~$ cd .
./ ../ .gitolite/ .ssh/ .vim/
git@ubuntu18_lamp_server:~$ rm .gitolite/ -rf
git@ubuntu18_lamp_server:~$ ./bin/gitolite setup -pk wanglinbin.pub
7、权限管理配置
7.1 添加用户
$ scp 用户名.pub git@ip:gitolite-admin/keydir #将pub公钥拷贝到gitolite-admin仓库
7.2 添加仓库
$ vi gitolite-admin/conf/gitolite.conf
修改其中内容如下
/*
repo gitolite-admin
RW+ = git admin
repo demo
RW = git admin test wanghui wangkun
repo testing
RW+ = @all
*/
repo 代表是创建了一个demo仓库
RW+ 代表可读
等号后面的代表是此仓库的权限用户,多用户使用空格隔开。
8、本地添加仓库、用户,并push到git服务器:
本地工作台(macbook)当前目录(比如: /Users/zhangwei/gitadmin):
$ git clone git@47.104.92.84:gitolite-admin.git
$ ls
# gitolite gitolite-admin testing
$ cd gitolite-admin
$ ls
# conf keydir
$ cd keydir
$ ls
# admin.pub wanghui.pub
$ vi zhangke.pub #公钥复制进去,并保存
$ ls
# admin.pub wanghui.pub zhangke.pub
$ cd ..
$ cd conf
$ ls
# gitolite.conf
$ vi gitolite.conf
修改内容如下:
repo gitolite-admin
RW+ = admin wanghui
repo wanghui
RW+ = admin wanghui zhangke #zhangke是新增的用户,对应公钥文件../keydir/zhangke.pub,保存退出
repo testing
RW+ = @all
然后继续
$ cd ..
$ git add .
$ git commit -m "add keydir/wangkun.pub and add user wangkun to repo: admin.git"
$ git push
9.查看仓库列表
$ssh git@192.168.80.6
PTY allocation request failed on channel 0
hello wanglinbin, this is git@ubuntu18_lamp_server running gitolite3 v3.6.12-1-g828152d on git 2.17.1
R W gitolite-admin
R W testing
Connection to 192.168.80.6 closed.
上面是正常情况,如果出现下面提示,则说明用户不存在或公钥有误:
git@192.168.80.6's password:
Permission denied, please try again.
git@192.168.80.6's password:
解决办法为参考第3或第8步,或者使用git帐户登陆,并进到.ssh目录下,将新公钥添加进去
# gitolite start
command="/home/git/gitolite/src/gitolite-shell herencheng",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOeyvPJ5PgyBMjOsqDLwWUaWuOqyCRjdrT/azAg94CsS9MRpK2ZUyT7r6lBuw0UA7RSnlPQGP0ikbCG9BcxuBAM/60n4N4Bj76PPPoWtuV1bGKk6DF6i5o8SD8+1YUE7ZCmGLbIcNZsoY2T+n+RIi2GoRxGnT4g14j3c6OxR5EJZRTUZlXPwQZQaQ/DmIqtAzn+Yx81QQoMeB2R14i8sbqIZuq2R4M1ldACHXP+5udAxgiRBhPkeL8ArLkKuUDLoszAQ9HDn1CFlkCwZKjChYPjoAxLtgZwCHnsImswdirhRmjFJUjQUSVmFzVd41KeXmfQRbGFvJSEKe4ba5nnLEV herencheng@ubuntu18_lamp_server
command="/home/git/gitolite/src/gitolite-shell wanglinbin",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDYtR+WFGZbejjwxxIySfwOXOo4XiTaxopFuyErw0GQr4IU1TEE749l2LMlX+hM+0ugG6Kgz9xdEYyyUQiPkZmGBbLrlGHrVq5BZ0APaF3tygy0BQIdY1nVeVgcJOlbqiIqH4ioT+7eRSvtDsc+ubx0CL3GsElWwtZBanDAQsLbpcifekMERHkHouHUIcOZVtqWNbW00g6MJZPGUreNa4YHfqMO6HfArwLArjPc/TmPpTt5fUN69dp1z/ppePBnh+TittGZv2/O7Vb8VSLND8pPsq19ri6bengKPUsrQwV/6YQkF8kdYiKczlT1jDi6qg1TQMaukXHWAKSUWG//ER87 wanglinbin@ubuntu18_lamp_server
command="/home/git/gitolite/src/gitolite-shell wlb",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDjfY7yXR/1HpwE2HnlKwLzQfUoJRNH4rYcAdiqBgvZg3gCOEOKHCIE2ci/cv/a56ZjF9Cbi182QL/LQTvf3lbFNPOGh5/3M5q0m3uShAY8orvVSaXpmVv6bzLHpaaV0JnGa6qTIT8nW6XaIQNkH5bwa1qhvRcMz0yK9knZWfMhvzGY61Hg1xjGurOqRrsuDW6kQ43MDGaWWSNzRxXllr4/c3Hz2FeJe3A1YAS5BsZf7O3qj1TaMv4Jgc3k+jk9JZ1XaNgnfHqSRdUhn9vNZr+Q6r4GMv0x2vaYQl2Ds8lTg41N83aB9ButivTHw8bTzvodQLF1jfQ4de7Nujb7+VT5 WLB@DESKTOP-E02KUOL
# gitolite end
command 为描述内容,可根据不同用户修改名称,然后把公钥复制在后面即可
阅读(1127) | 评论(0) | 转发(0) |