git服务器搭建及多用户权限管理

简单的git服务器搭建操作:

  1. 安装git在服务器上
  2. 下载git客户端在windos

服务器端操作:

  1. 查看要创建的用户 id username
  2. 创建用户: useradd username
  3. 设置用户密码:passwd username

服务器端创建仓库然后把仓库的owner修改为username

  1. 以/opt/git/gittest.git作为仓库
  2. mkdir -p /opt/git
  3. git init --bare /opt/git/gittest.git
  4. cd /opt/git/
  5. chown -R account:group gittest.git/

客户端clone 远程仓库

  1. 在客户端目录 D:\gittest\gittest_gitbash作为项目地址并进入
  2. git clone username@192.168.171.118:/opt/git/gittest.git 第一次的时候输入yes即可
  3. 此时在C:\Users\用户名\.ssh目录下会出现known_hosts文件

客户端创建ssh公钥和私钥

  1. ssh-keygen -t rsa -C "1114375070@qq.com"
  2. 连按三次enter(第一次是文件名,后两次是提交代码是需要输入的密码) 此时在 C:\Users\用户名\.ssh 下会多出两个文件 id_rsa 和 id_rsa.pub .   id_rsa 是私钥。id_rsa.pub 是公钥


服务器git 打开RSA认证

  1. 进入/etc/ssh/sshd_config 编辑打开下面三个注释没有的添加进去 RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys
    保存退出
    重启sshd服务
    systemctl restart sshd.service //(centos 7)

    由 AuthorizedKeysFile 得知公钥的存放路径是 .ssh/authorized_keys,实际上是 $Home/.ssh/authorized_keys,由于管理 Git 服务的用户是 git,所以实际存放公钥的路径是 /home/git/.ssh/authorized_keys

    在 /home/git/ 下创建目录 .ssh

    然后把 .ssh 文件夹的 owner 修改为 git
    chown -R git:git .ssh


    2.将客户端公钥导入服务端/home/git/.ssh/authorized_keys 文件
    回到git bash
    ssh username@192.168.171.118 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
    //ssh gitAdmin@192.168.171.118 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
    需要输入服务端username 的密码
    回到服务端查看.ssh下是否存在authorized_keys文件
    重要:每新建一个账号都需要新建一个.ssh文件夹

修改 .ssh 目录的权限为 700

修改 .ssh/authorized_keys 文件的权限为 600


14:客户端在此clone远程仓库
git clone username@192.168.171.118:/opt/git/gittest.git

15:
⑨ 禁止 git 用户 ssh 登录服务器
之前在服务器端创建的 git 用户不允许 ssh 登录服务器

编辑 /etc/passwd

找到:

git:x:502:504::/home/git:/bin/bash
修改为

git:x:502:504::/home/git:/bin/git-shell
此时 git 用户可以正常通过 ssh 使用 git,但无法通过 ssh 登录系统。

参考:https://www.cnblogs.com/dee0912/p/5815267.html

删除账号:userdel username


git clone git@ip:path/gittest.git


这个需要在开发者电脑生成公钥,然后上传到git服务器上,保存在authorized_keys中。
首先在客户端设置用户名和邮箱,这个不不是登录用户,可以看做是一个别称,用来跟踪代码提交记录的
git config --global user.name "yangyangwang"

git config --global user.email wang839305939@outlook.com

 

 

本文总结了Linux添加或者删除用户和用户组时常用的一些命令和参数。
1、建用户:
adduser phpq //新建phpq用户
passwd phpq //给phpq用户设置密码

2、建工作组
groupadd test //新建test工作组

3、新建用户同时增加工作组
useradd -g test phpq //新建phpq用户并增加到test工作组

注::-g 所属组 -d 家目录 -s 所用的SHELL

 

管理员账号
gitAdmin:111111
git clone gitAdmin@192.168.171.118:/opt/dw/slaveDev/slave.git

--------------------------------------------------------------------------------------------------------------------------------------------

安装git,使用yum源在线安装
yum install -y git
初始化git仓库,在/home/data/git/路径下初始化一个空的仓库gittest
git init --bare /home/data/git/gittest.git
到这里Git服务器就搭好了,而且有一个空的git仓库。下面的工作就是添加用户,因为看到各位大牛添加用户都是通过密钥实现的,这样可以免密使用,而我自己感觉生成密钥这个过程可能对开发人员来说是一件麻烦事(虽然只有一句命令),而且开发人员较少,所以决定添加用户名密码,服务器端管理员直接管理即可。不说废话了,接着往下看。
创建用户组gitgroup
groupadd gitgroup
创建用户qixiao
useradd qixiao
为用户设置密码
passwd qixiao
禁用git用户的shell登录,防止用户通过Git用户登录服务器。编辑/etc/路径下的passwd文件,将文件后边的bash改成git-shell,即

qixiao:x:1003:1003::/home/qixiao:/bin/bash
改成

qixiao:x:1003:1003::/home/qixiao:/bin/git-shell
将用户qixiao添加到用户组gitgroup
usermod -G gitgroup qixiao
修改git仓库所在目录/home/data/git/的用户组为gitgroup
chgrp -R gitgroup /home/data/git/
写到这里,用户组对/home/data/git/路径只有读的权限,没有写的权限。上边的配置都没有什么问题,就这个权限折腾了一天,用户组默认的权限是没有写权限的,配置好不能上传代码,问题就在用户组的权限。
修改目录及其子文件的权限
chmod -R 777 /home/data/git/

 

 

 

 


usermod -G groupname username (这种会把用户从其他组中去掉,只属于该组)
如:usermod -G git git (git只属于git组)

usermod -a -G groupname username (把用户添加到这个组,之前所属组不影响)
如:usermod -a -G www git (git属于之前git组,也属于www组)

 


git 分支合并
主干分支一般不用来开发,开发一般在其他分支上(这是前提)
当其他分支的功能开发完毕以后,就需要将此功能合并到主干分支上,
暂时摸索出来的门路如下:
1:首先切换到其他分支要合并到的分支上去
2: 使用git merge 分支名字(待合并的分支)(此时会看到fast-forward,具体啥意思自己搜)
3:等待合并完成将其他分支删除git branch -d 其它分支名字

以上操作会保持主干的粗壮性和枝繁叶茂

posted @ 2020-12-31 11:19  first_semon  阅读(4601)  评论(0编辑  收藏  举报