在Ubuntu系统中搭建Git服务器可以通过多种方式实现,其中使用Gitosis或Gitolite进行集中式管理是较为常见的方法,以下将详细介绍基于Gitolite的搭建过程,Gitolite支持细粒度的权限控制,适合团队协作场景。

准备工作阶段,首先需要一台安装有Ubuntu Server(推荐20.04 LTS版本)的主机,确保系统已更新至最新状态,执行sudo apt update && sudo apt upgrade -y更新系统软件包,然后安装必要的依赖包,包括git、openssh-server和python3,通过sudo apt install git openssh-server python3 -y命令完成安装,创建一个专用用户用于运行Git服务,例如sudo adduser git,后续操作将以此用户身份进行。
接下来配置SSH密钥认证,在本地开发机器上生成SSH密钥对(如果尚未生成),执行ssh-keygen -t rsa -b 4096,按提示保存密钥(默认路径为~/.ssh/id_rsa),将公钥(id_rsa.pub)上传到Ubuntu服务器,可通过scp ~/.ssh/id_rsa.pub user@server:/tmp/传输,登录到Ubuntu服务器,切换至git用户(su - git),将公钥文件移动到~/.ssh/authorized_keys中,并设置正确的权限:mkdir -p ~/.ssh && cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys。
安装Gitolite是核心步骤,首先从GitHub克隆Gitolite仓库:git clone https://github.com/sitaramc/gitolite,进入克隆目录,执行git checkout tags/v3.6.12(可指定最新稳定版版本号),然后运行mkdir -p ~/bin && gitolite/install -to ~/bin将Gitolite安装到~/bin目录,初始化Gitolite仓库,使用cp ~/gitolite/contrib/admin.pub ~/复制管理员公钥,然后执行gl-setup ~/admin.pub,过程中会提示输入仓库存储路径(默认为repositories),确认后即完成初始化。
配置仓库权限时,需要编辑~/.gitolite.rc文件(可选),主要修改UMASK值为0027以确保权限安全,在本地开发机器上,克隆Gitolite的admin仓库:git clone git@server:gitolite-admin,进入gitolite-admin目录,在conf/gitolite.conf文件中定义仓库和用户权限,创建一个名为project.git的仓库,并赋予用户alice读写权限,配置如下:

repo project
RW+ = alice
保存后提交并推送:git commit -m "add project repo" && git push,此时服务器端会自动创建仓库并应用权限。
验证服务器配置是否成功,在本地执行git clone git@server:project.git,若能成功克隆则表示搭建完成,后续可通过修改gitolite.conf文件添加新仓库或调整权限,每次推送后权限自动生效。
相关问答FAQs:
-
如何添加新的用户到Git服务器?
答:首先在新用户的开发机器上生成SSH密钥对,将公钥(id_rsa.pub)发送给管理员,管理员登录到Ubuntu服务器,切换至git用户,将新用户的公钥追加到~/.ssh/authorized_keys文件中,然后在本地克隆gitolite-admin仓库,编辑conf/gitolite.conf文件,在相应仓库的权限行中添加新用户名(如RW+ = newuser),提交并推送即可。
(图片来源网络,侵删) -
如何重置Gitolite的管理员密码?**
答:Gitolite本身不依赖系统密码,而是通过SSH密钥认证,若需要更换管理员公钥,只需将新的管理员公钥文件(如new_admin.pub)上传到服务器,替换~/.gitolite/admin.pub文件,然后重新执行gl-setup ~/new_admin.pub命令,过程中会提示是否覆盖现有配置,确认后即可完成管理员密钥的更新。
