
如果您希望在麒麟OS系统上搭建一个私有的Git服务器,以便团队成员可以协同开发并管理代码版本,则需要配置基础服务环境并设置Git仓库访问权限。以下是完成此任务的具体步骤:
一、安装Git与必要依赖
麒麟OS基于Linux内核,通常预装Git,但需确认版本并安装SSH服务以支持安全的远程仓库访问。SSH是Git远程操作的基础协议,必须启用并运行。
1、打开终端,执行命令检查Git是否已安装:git --version。
2、若提示未找到命令,则运行:sudo apt update && sudo apt install git openssh-server -y(适用于apt源的麒麟OS版本)。
3、启动SSH服务:sudo systemctl enable ssh && sudo systemctl start ssh。
4、验证SSH服务状态:sudo systemctl status ssh,确保显示“active (running)”。
二、创建专用Git用户与组
为保障安全性,不应使用root或普通用户直接托管仓库,而应新建无登录Shell权限的git用户,限制其仅能通过SSH执行Git命令。
1、执行命令创建git组:sudo groupadd git。
2、创建git用户并禁用交互式登录:sudo useradd -m -g git -s /usr/bin/git-shell git。
3、为git用户设置密码(仅用于SSH密钥未配置时的备用验证):sudo passwd git。
4、修改git用户的主目录权限:sudo chmod 755 /home/git。
三、初始化裸仓库并配置路径
Git服务器端必须使用裸仓库(bare repository),即不含工作区的纯版本历史存储,避免推送冲突并符合服务端规范。
1、切换至git用户主目录:sudo -u git -H bash -c "cd /home/git && mkdir -p repositories"。
2、创建一个示例裸仓库:sudo -u git -H git init --bare repositories/myproject.git。
3、确认仓库所有权正确:sudo chown -R git:git /home/git/repositories。
篇文章是针对git版本控制和工作流的总结,如果有些朋友之前还没使用过git,对git的基本概念和命令不是很熟悉,可以从以下基本教程入手: Git是分布式版本控制系统,与SVN类似的集中化版本控制系统相比,集中化版本控制系统虽然能够令多个团队成员一起协作开发,但有时如果中央服务器宕机的话,谁也无法在宕机期间提交更新和协同开发。甚至有时,中央服务器磁盘故障,恰巧又没有做备份或备份没及时,那就可能有丢失数据的风险。感兴趣的朋友可以过来看看
4、设置目录全局可读(仅限本地网络可信环境):sudo chmod -R 755 /home/git/repositories。
四、配置SSH密钥实现免密访问
客户端通过SSH密钥对认证访问Git服务器,无需每次输入密码,同时提升安全性。服务端需将客户端公钥添加至git用户的authorized_keys文件中。
1、在客户端生成密钥对(如尚未生成):ssh-keygen -t ed25519 -C "your_email@example.com"。
2、将客户端公钥内容(~/.ssh/id_ed25519.pub)复制到剪贴板。
3、在服务器端为git用户创建SSH授权目录:sudo -u git -H mkdir -p /home/git/.ssh。
4、将公钥写入authorized_keys:echo "粘贴的公钥内容" | sudo -u git -H tee -a /home/git/.ssh/authorized_keys。
5、设置密钥文件权限:sudo -u git -H chmod 700 /home/git/.ssh && sudo -u git -H chmod 600 /home/git/.ssh/authorized_keys。
五、测试克隆与推送功能
完成上述配置后,客户端应能通过SSH URL克隆仓库,并成功推送提交。该测试验证服务端基础功能是否就绪。
1、在客户端执行克隆命令:git clone git@服务器IP:/home/git/repositories/myproject.git。
2、进入克隆目录,创建测试文件:echo "# Test" > README.md。
3、执行本地提交:git add . && git commit -m "Initial commit"。
4、推送至远程仓库:git push origin master(或main,依初始化默认分支而定)。
5、检查服务器端仓库更新:sudo -u git -H git --git-dir=/home/git/repositories/myproject.git log --oneline。









