服务器上的 Git - Gitosis

公司有这个东西,之前一直没研究过这个是啥,原来就是git的一个权限管理工具,可以用来搭建git服务器,当然gitlab更好用
具体请参考:服务器上的 Git - Gitosis

本篇文章参考:

服务器上的 Git - Gitosis
gitosis使用笔记

一、获取安装包

root@qqq:~# mkdir /data
root@qqq:~# cd /data
root@qqq:/data# git clone https://github.com/tv42/gitosis.git
Cloning into 'gitosis'...
remote: Enumerating objects: 661, done.
remote: Total 661 (delta 0), reused 0 (delta 0), pack-reused 661
Receiving objects: 100% (661/661), 118.12 KiB | 157.00 KiB/s, done.
Resolving deltas: 100% (430/430), done.

二、安装

2.1安装前要安装依赖包
root@qqq:~# apt-get install python-setuptools -y
2.2开始安装
root@qqq:/data/gitosis# python setup.py install

三、把代码仓库放到/data/uscwifi目录下面,这一步创建一个账户,家目录为/data/uscwifi,根据个人喜好,我这里创建uscwifi用户:

#创建家目录
root@qqq:~# mkdir -p /data/uscwifi
# 创建用户
root@qqq:/data# useradd -r \
> -s /bin/bash \
> -c "git version control" \
> -d /data/uscwifi \
> uscwifi
#看一下
root@qqq:/data# getent passwd uscwifi 
uscwifi:x:999:999:git version control:/data/uscwifi:/bin/sh
#修改所有者
root@qqq:/data# chown uscwifi.uscwifi /data/uscwifi/ -R

四、切换到uscwifi用户,上传我的公钥,初始化Gitosis

#切换用户
root@qqq:~# su - uscwifi
uscwifi@qqq:~$ pwd
/data/uscwifi
#上传我的公钥
david@DESKTOP-IKJKR9H:~$ scp .ssh/id_rsa.pub [email protected]:/data/uscwifi
#开始初始化(我这里需要修改这个公钥的权限root@qqq:/data# chown uscwifi /data/uscwifi/id_rsa.pub)
#使用git用户初始化Gitosis
#如果使用sudo -H -u uscwifi gitosis-init < id_rsa.pub 在超级管理员下运行
uscwifi@qqq:~$ gitosis-init < id_rsa.pub

#然后当前目录下就生成了两个目录
uscwifi@qqq:~$ ls 
gitosis  id_rsa.pub  repositories

五、客户端操作Gitosis

5.1、试着连一下,没有问题,说明gitosis认出了该用户身份,但由于没有运行任何git命令所以切断连接
root@qqq:~# ssh [email protected]
The authenticity of host '10.0.3.109 (10.0.3.109)' can't be established.
ECDSA key fingerprint is SHA256:xVKdJNr4Qbfoe/Sasm20qXZsNMmBSOFvo4lMUOJSkyk.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.3.109' (ECDSA) to the list of known hosts.
PTY allocation request failed on channel 0
ERROR:gitosis.serve.main:Need SSH_ORIGINAL_COMMAND in environment.
Connection to 10.0.3.109 closed.

5.2、克隆Gitosis的控制仓库到本地

root@qqq:~# mkdir test
root@qqq:~# cd test/
root@qqq:~/test# git clone [email protected]:gitosis-admin.git
Cloning into 'gitosis-admin'...
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (4/4), done.
Receiving objects: 100% (5/5), 696 bytes | 696.00 KiB/s, done.
remote: Total 5 (delta 0), reused 0 (delta 0)
root@qqq:~/test# ls
gitosis-admin
#进入该目录,有个conf文件还有个keydir目录
root@qqq:~/test/gitosis-admin# ls
gitosis.conf  keydir
root@qqq:~/test/gitosis-admin# ls keydir/
david.pub

六、将运维同事tom加入控制权限组

gitosis.coonf是用来设置用户、仓库和权限的控制文件
keydir目录保存每个人的公钥

6.1、他的key放到keydir
root@qqq:~/test/gitosis-admin/keydir# cp -a david.pub tom.pub
root@qqq:~/test/gitosis-admin/keydir# echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCjJx12/KDW0sQgk62gK4A8f7aYclsODDXzR+rUoP37y/f1CwI3gXXU+1cLOVN3FdHhsyMwSzraWXDJ+8+OyjEo1T9fbuCAebJB3Vn7sDdi0uix3r4gHYxeqOMS/vZSmBzyIlwDShM/4ss/6fdzUcC4zd150v6pvGegdGh8aYY0T1mPocqFHyfb0bLtoK6BaaNy6iSijJoLwdSRoLyBZ4dDzKhI/Est/YAnnllQsM2oYS+ekTkll6/WONFI2wfwtyj4sHUPk9wHTdPB+b/w6onGlE2haYQTLsYx7Z4GMH0HaRXmxmRGdtVd8oDMMEJFRX8DceL97QnSnGaie9ZwFYB9 tom@client" > tom.pub 
6.2、修改conf文件

gitosis-admin该团队拥有成员david和tom,对gitosis-admin仓库具有读写权限

在这里插入图片描述

6.3、推到仓库
root@qqq:~/test/gitosis-admin# git config --global user.email "[email protected]"
root@qqq:~/test/gitosis-admin# git config --global user.name "David"
root@qqq:~/test/gitosis-admin# git add .
root@qqq:~/test/gitosis-admin# git commit -m "add tom to gitosis-admin"
[master b7c376f] add tom to gitosis-admin
 2 files changed, 2 insertions(+), 1 deletion(-)
 create mode 100644 keydir/tom.pub
root@qqq:~/test/gitosis-admin# git push
Counting objects: 5, done.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 760 bytes | 760.00 KiB/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To 10.0.3.109:gitosis-admin.git
   6d26da5..b7c376f  master -> master

6.4、tom拉取仓库测试,没有问题

[tom@client ~]$ git clone [email protected]:gitosis-admin.git
正克隆到 'gitosis-admin'...
The authenticity of host '10.0.3.109 (10.0.3.109)' can't be established.
ECDSA key fingerprint is SHA256:xVKdJNr4Qbfoe/Sasm20qXZsNMmBSOFvo4lMUOJSkyk.
ECDSA key fingerprint is MD5:14:ab:81:92:1f:ff:5e:ca:59:5e:88:d9:fb:06:20:16.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.3.109' (ECDSA) to the list of known hosts.
remote: Counting objects: 10, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 10 (delta 0), reused 0 (delta 0)
接收对象中: 100% (10/10), done.

猜你喜欢

转载自blog.csdn.net/qq_33317586/article/details/88739644