git服务器搭建及多用户权限管理
简单的git服务器搭建操作:
- 安装git在服务器上
- 下载git客户端在windos
服务器端操作:
- 查看要创建的用户 id username
- 创建用户: useradd username
- 设置用户密码:passwd username
服务器端创建仓库然后把仓库的owner修改为username
- 以/opt/git/gittest.git作为仓库
- mkdir -p /opt/git
- git init --bare /opt/git/gittest.git
- cd /opt/git/
- chown -R account:group gittest.git/
客户端clone 远程仓库
- 在客户端目录 D:\gittest\gittest_gitbash作为项目地址并进入
- git clone username@192.168.171.118:/opt/git/gittest.git 第一次的时候输入yes即可
- 此时在C:\Users\用户名\.ssh目录下会出现known_hosts文件
客户端创建ssh公钥和私钥
- ssh-keygen -t rsa -C "1114375070@qq.com"
- 连按三次enter(第一次是文件名,后两次是提交代码是需要输入的密码) 此时在 C:\Users\用户名\.ssh 下会多出两个文件 id_rsa 和 id_rsa.pub . id_rsa 是私钥。id_rsa.pub 是公钥
服务器git 打开RSA认证
- 进入/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 其它分支名字
以上操作会保持主干的粗壮性和枝繁叶茂