Chinaunix首页 | 论坛 | 博客
  • 博客访问: 655889
  • 博文数量: 195
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 894
  • 用 户 组: 普通用户
  • 注册时间: 2015-09-21 16:48
文章分类

全部博文(195)

文章存档

2024年(1)

2023年(1)

2022年(3)

2021年(16)

2020年(4)

2019年(5)

2018年(10)

2017年(72)

2016年(36)

2015年(47)

我的朋友

分类: 嵌入式

2022-11-29 15:42:42




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) |
给主人留下些什么吧!~~