这份手册默认是单用户基础版,但可以基于它改造实现多电脑、多用户的协作,并非完全不支持,核心区别在于原手册仅配置了单个git系统用户+无精细化权限控制,改造后就能实现多用户分别用SSH密钥认证、按需分配仓库权限,满足多电脑协作需求。
1. 单用户
先明确原手册的核心局限(单用户根源)
- 仅创建了一个系统级
git用户,所有客户端都通过这个用户连接服务器,无法区分不同操作用户; - 无仓库权限管控,所有能连接的客户端都能对仓库进行
push/pull,无法实现“部分用户只读、部分用户可写”; - 仅配置了一个客户端的SSH公钥,默认只有这一台电脑能免密访问。
改造思路:基于原手册,实现「多电脑+多用户协作」 原手册的裸仓库基础搭建逻辑是通用的,只需补充多用户SSH密钥管理和可选的权限控制,就能满足协作需求,分「轻量版(仅多用户免密协作,无精细化权限)」和「进阶版(多用户+精细化权限控制)」,适配不同协作场景。
2. 轻量版(多电脑/多用户)
快速实现多电脑/多用户免密协作(无精细化权限)
适合小团队、信任度高的场景,所有用户都能对仓库进行读写操作,仅需为每个用户/每台电脑添加SSH公钥即可,基于原手册直接改造,步骤极简:
2.1 核心原理
所有协作用户仍通过服务器的git系统用户连接,但将每个用户/每台电脑的SSH公钥都追加到服务器git用户的authorized_keys文件中,实现多端免密访问。
2.2 具体步骤
-
各客户端生成自己的SSH密钥 每个用户在自己的电脑上执行(一路回车,无需设置密码):
ssh-keygen -t rsa -C "自己的邮箱/用户名标识"生成后在
~/.ssh/目录下得到id_rsa(私钥)和id_rsa.pub(公钥)。 -
服务器端追加所有公钥到authorized_keys 登录服务器,切换到
git用户,将每个客户端的公钥追加到文件中(不要用echo > 覆盖,要用echo >> 追加):su - git # 追加第一个用户的公钥 echo "第一个用户的id_rsa.pub完整内容" >> ~/.ssh/authorized_keys # 追加第二个用户的公钥 echo "第二个用户的id_rsa.pub完整内容" >> ~/.ssh/authorized_keys # 以此类推,添加所有协作用户/电脑的公钥追加后重新确认权限(必须严格,否则SSH认证失败):
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys -
各客户端配置远程仓库并测试 每个用户在自己的电脑上克隆仓库/配置远程地址,即可免密
push/pull:# 克隆仓库(替换服务器IP) git clone git@服务器IP:/home/git/repositories/myrepo.git # 本地提交后直接推送,无需输密码 git push origin master
轻量版优势 完全基于原手册,零额外工具、仅2步改造,快速实现多电脑/多用户协作,适合小团队快速上手。
3. 进阶版(多用户+精细权限)
多用户+精细化权限控制(不同用户不同权限)
适合中大型团队、需要管控仓库权限的场景(如部分用户只读、部分用户可写、不同用户访问不同仓库),在原手册基础上,新增Gitolite工具(轻量Git权限管理工具,无需复杂配置),替代原生裸仓库的无权限模式。
3.1 核心原理
用Gitolite接管服务器的Git仓库管理,通过配置文件定义用户列表和仓库权限,所有用户仍通过git系统用户连接,但Gitolite会根据公钥标识区分不同用户,并匹配对应的权限。
3.2 核心改造步骤(基于原手册)
-
服务器端卸载原裸仓库的简易配置(保留git用户)
su - git # 删除原裸仓库(若已有项目,可先备份) rm -rf /home/git/repositories/myrepo.git exit -
安装Gitolite并初始化(接管权限管理)
# 安装gitolite(CentOS) yum install gitolite -y # 以git用户初始化,指定管理员公钥(用第一个管理员的id_rsa.pub内容,替换成实际的) su - git gitolite setup -pk /tmp/管理员公钥.pub exit初始化后,Gitolite会自动创建
~/repositories/仓库目录,所有仓库由Gitolite管理。 -
管理员配置多用户+仓库权限 管理员克隆Gitolite的配置仓库,修改配置文件定义用户和权限,推送到服务器即可生效:
# 管理员在自己电脑上克隆配置仓库 git clone git@服务器IP:gitolite-admin.git cd gitolite-admin- 添加用户:将所有协作用户的
id_rsa.pub文件复制到keydir/目录下(文件名=用户名,如zhangsan.pub、lisi.pub); - 配置权限:编辑
conf/gitolite.conf,定义仓库和用户权限,示例:# 定义仓库myrepo repo myrepo # 管理员zhangsan拥有读写权限 RW+ = zhangsan # 开发人员lisi拥有读写权限 RW = lisi # 测试人员wangwu仅拥有只读权限 R = wangwu - 推送配置到服务器,使权限生效:
git add . git commit -m "添加用户并配置myrepo权限" git push origin master
- 添加用户:将所有协作用户的
-
各用户克隆仓库并测试权限 每个用户在自己电脑上克隆仓库,Gitolite会自动匹配权限,例如只读用户无法执行
push:# 所有用户克隆仓库的命令一致 git clone git@服务器IP:myrepo.git
3.3 进阶版优势
实现用户隔离+精细化权限控制,满足团队协作的权限管控需求,且Gitolite轻量,无需像GitLab那样占用大量服务器资源。
4. 总结
- 这份手册并非不能实现多电脑/多用户协作,只是默认是单用户基础版,无权限控制;
- 轻量改造(仅追加SSH公钥):适合小团队,零额外工具,快速实现多端免密协作;
- 进阶改造(新增Gitolite):适合需要权限管控的团队,实现用户隔离和精细化权限;
- 对比GitLab:这种原生Git+Gitolite的方式,服务器资源占用极低(适合低配服务器),而GitLab需要至少2G内存,适合资源充足、需要可视化界面的场景。
简单说,如果你只是小团队几个人协作,直接用轻量版改造就够了,基于原手册5分钟就能搞定;如果需要权限管控,再用Gitolite进阶改造。