
如果您希望在麒麟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。
用大白话操作当前项目的 Git/GitHub——配置 GitHub(装 gh CLI + 登录 + 建仓库)、备份、拉取下载、查询历史、回滚代码、管理分支。当用户用日常语言表达 git 意图时触发(例如"git备份一下""git下载项目""git拉下来""git看看我改了啥""git回退到上一个版本""git新建个分支搞新功能""git合并到主分支""git
3、确认仓库所有权正确:sudo chown -R git:git /home/git/repositories。
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。

















