设为首页 收藏本站
查看: 755|回复: 0

[经验分享] gitosis安装配置详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-7-11 09:24:58 | 显示全部楼层 |阅读模式
所需环境(linux)
CentOS【我用的是7】
所需软件:git python gitosis openssh-client

具体步骤:
服务器端
有两个用户(同一台机子,当然你可以用两台机子):一个是作为管理者用户qjjia(管家),一个用户(git)代码托放者(可以理解为仓库)
1
2
[iyunv@genitus-86-092 home]# useradd -m git  #创建一个git账户作为服务端的仓库
[iyunv@genitus-86-092 git]# passwd git



将该用户作加入sudoers里:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[iyunv@genitus-86-092 home]# vim /etc/sudoers

root    ALL=(ALL)       ALL  #直接将用户添加到sudo组里

## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS

## Allows people in group wheel to run all commands
%wheel  ALL=(ALL)       ALL   #将wheel组中的所有用户添加到sudo组
%dlp    ALL=(ALL)       ALL   #将dlp组中的所有用户添加到sudo组


在此,我将git用户填加到dlp组中
usermod -G dlp git

检查有没有添加成功
[iyunv@genitus-86-092 home]# groups git
git : git dlp

# su - cola  //切换到管理者用户 cola




安装相关软件
1
2
3
4
5
$ yum install git  #安装git
$ sudo yum install python python-setuptools   #安装python环境
$ git clone git://github.com/res0nat0r/gitosis.git  #下载gitosis
[cola@genitus-86-092 ~]$ ls
gitosis



编译安装gitosis

1
2
[qjjia@genitus-86-092 ~]$ cd gitosis/
[qjjia@genitus-86-092 gitosis]$ sudo python setup.py install



生成管家qjjia的公钥,用于初始化使用
1
[qjjia@genitus-86-092 ~]$ ssh-keygen -t rsa



将生成的公钥拷贝存放在/tmp/cola/中
1
[qjjia@genitus-86-092 ~]$ cp ~/.ssh/id_rsa.pub /tmp/cola/



用服务器端生成的公钥初始化gitosis,下面一步很关键,请注意!!!
1
2
3
4
5
6
7
8
9
[qjjia@genitus-86-092 ~]$ cd gitosis/
[qjjia@genitus-86-092 gitosis]$ sudo -H -u git gitosis-init < /tmp/cola/id_rsa.pub


[qjjia@genitus-86-092 ~]$ su git   ####切换至git账户查看~/下的文件

[git@genitus-86-092 ~] $ ls
gitosis  repositories
[git@genitus-86-092 ~]$ sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update





切换回管家qjjia账户,从git账户的目录下(~/repositories/gitosis-admin.git)clone gitosis-admin.git管理平台(这玩意分配账户权限和项目名,对应账户的公钥)
git clone git@localhost:gitosis-admin (这步骤应该是不需要密码的,应为你是用qjjia的公钥初始化gitosis的)
1
2
3
4
5
6
[qjjia@genitus-86-092 ~]$ ll
drwxr-xr-x. 4 qjjia dlp 49 Jul  9 15:05 gitosis-admin

cd进入,你会发现如下两个文件
[qjjia@genitus-86-092 gitosis-admin]$ ls
gitosis.conf (分配账户权限的文件)  keydir(这个是目录,存放账户的公钥)



配置账户权限giosis.comf,第一次打开,内容如下
1
2
3
4
5
6
[qjjia@genitus-86-092 gitosis-admin]$ vim gitosis.conf
[gitosis]

[group gitosis-admin]   #组名
members = qjjia@genitus-86-092  #账户名,注意要与keydir目录下的 公钥名一致,但keydir的公钥名有扩展名.pub
writable = gitosis-admin  #托管的项目名,一般为文件夹名字



针对members的补充:如qjjia@genitus-86-092 对应的公钥名为qjjia@genitus-86-092.pub

然后做如下修改,新填两个用户M 和long 对项目cola进行控制,其对应的公钥为M.pub long.pub
1
2
3
4
5
6
7
8
9
10
11
[qjjia@genitus-86-092 gitosis-admin]$ vim gitosis.conf

[gitosis]

[group gitosis-admin]
members = qjjia@genitus-86-092
writable = gitosis-admin

[group cola]
members = M long qjjia@genitus-86-092
writable = cola



然后在对应的客户端 M 和 long 的机子上生成自己的公钥,上传账户M 和 long 的公钥到 服务端qjjia账户的keydir目录中,结果如下
1
2
3
4
5
[qjjia@genitus-86-092 keydir]$ ll
total 12
-rw-r--r--. 1 qjjia dlp 400 Jul  9 14:20 long.pub
-rw-r--r--. 1 qjjia dlp 397 Jul  9 15:04 M.pub
-rw-r--r--. 1 qjjia dlp 402 Jul  9 14:20 qjjia@genitus-86-092.pub



这里举一个例子,在客户端cola下生成公钥上传到keydir的步骤:
    在long的主机上
1
[long@nginx1-86-098 ~]$ ssh-keygen -t rsa  #然后一路回车



    在qjjia的主机上

1
[qjjia@genitus-86-092 keydir]$ scp long@192.168.86.92:/home/long/.ssh/id_rsa.pub ./



完成了公钥上传到keydir工作后
做如下操作,将gitosis-admin的修改信息上传至git账户的代码仓库
先回退到gitosis-admin目录
1
2
3
4
[qjjia@genitus-86-092 ~]$ cd gitosis-admin/
git add .
git commit -am "add member john and project foo"
git push



在qjjia账户下创建cola项目目录,完成初始化,提交给git仓库
1
2
3
4
5
6
7
8
9
cd ~
mkdir cola
cd cola
git init
touch hello.txt
git add hello.txt
git commit -am 'first commit'
git remote add origin git@localhost:cola.git
git push origin master





下面都是客户端的操作:

客户端账户long从仓库clone cola.git,并添加一个新文件hello
1
2
3
4
5
6
[long@nginx1-86-098 ~]$ git clone git@192.168.86.92:cola.git
[long@nginx1-86-098 ~]$ cd cola
[long@nginx1-86-098 ~]$ touch hello
[long@nginx1-86-098 ~]$ git add hello
[long@nginx1-86-098 ~]$ git commit -am "add hello file!"
[long@nginx1-86-098 ~]$ git push



客户端账户M从仓库clone cola.git,并添加一个新文件sb
1
2
3
4
5
6
7
[M@nginx1-86-099 ~]$ git clone git@192.168.86.92:cola.git
[M@nginx1-86-099 ~]$ cd cola
[M@nginx2-86-099 cola]$ ls
hello  hello.txt
[M@nginx2-86-099 cola]$ git add sb
[M@nginx2-86-099 cola]$ git commit -am "add sb"
[M@nginx2-86-099 cola]$ git push



客户端账户long从仓库 git pull 文件
1
2
3
[long@nginx1-86-098 cola]$ git pull
[long@nginx1-86-098 cola]$ ls
hello  hello.txt  sb





常见问题:
git操作需要输入密码
  • 原因
  • 公密未找到

  • 解决
  • 上传id_pub.rsa到keydir并改为'gitosis帐号.pub'形式,如long.pub。扩展名.pub不可省略




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-242379-1-1.html 上篇帖子: centos7安装最新版git及免密码登录配置 下篇帖子: 搭建git服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表