
搭建一个基础的 Git 服务器比想象中简单核心只需要 **一台 Linux 服务器、一个专用用户、一个裸仓库**然后通过 SSH 进行访问控制。### 快速搭建步骤基于 SSH 协议这是最经典、最可控的方式适合小团队内部使用。**1. 环境准备与安装**先确保服务器已安装 Git。在 Ubuntu/Debian 上执行bashsudo apt updatesudo apt install git对于 CentOS/RHEL 系统则用 sudo yum install git。**2. 创建专用 Git 用户**为了隔离权限不要直接用 root 跑 Git 服务。创建一个名为 git 的系统用户bashsudo adduser git过程中设置的密码可以跳过直接回车因为我们后续会用 SSH 密钥认证。**3. 初始化裸仓库Bare Repository**裸仓库不包含工作目录专门用来接收推送。假设仓库根目录定为 /srv/gitbash# 创建仓库目录并赋权给 git 用户sudo mkdir -p /srv/gitsudo chown git:git /srv/git# 切换到 git 用户并初始化一个名为 myproject.git 的仓库sudo su - gitcd /srv/gitgit init --bare myproject.git按照惯例裸仓库目录名以 .git 结尾。**4. 配置 SSH 公钥访问**这是最安全的做法。开发者需要将自己本地的 SSH 公钥id_rsa.pub提供给你。在服务器上为 git 用户配置授权bash# 确保 .ssh 目录和文件权限正确sudo mkdir -p /home/git/.sshsudo touch /home/git/.ssh/authorized_keyssudo chmod 700 /home/git/.sshsudo chmod 600 /home/git/.ssh/authorized_keyssudo chown -R git:git /home/git/.ssh# 将开发者的公钥内容粘贴进去一行一个公钥sudo nano /home/git/.ssh/authorized_keys开发者配置好后就可以直接用 git clone git你的服务器IP:/srv/git/myproject.git 进行克隆和推送了。### 其他方案与进阶选择如果你的需求超出了“通过 SSH 管理代码”的范围可以考虑其他方式* **Git 守护进程git:// 协议**适合**匿名只读**访问比如公开的内部文档或供 CI/CD 机器拉取代码无需配置密钥。默认端口 9418需在仓库目录下创建 git-daemon-export-ok 文件来标记允许导出。* **HTTP(S) Nginx**适合需要通过浏览器或防火墙受限环境只开放 80/443访问的场景可配合 htpasswd 做简单的密码认证。* **现成的开源方案**如果你需要**网页界面、代码审查、Issue 跟踪**等完整功能直接在服务器上部署 **Gitea** 或 **GitLab CE** 通常是更高效的选择。### ⚠️ 安全与管理建议搭建完基础服务后有几点需要留意* **禁用 Shell 登录**作为纯粹的服务账号可以用 git-shell 替换 git 用户的默认 Shell防止有人通过 SSH 登录进服务器执行其他命令。* **定期备份**代码是核心资产务必把 /srv/git 目录纳入备份计划。* **权限管理**如果团队人多纯手工管理 authorized_keys 会变得复杂届时可以考虑迁移到 Gitea 等带用户管理界面的平台。你打算在哪种系统上搭建比如 Ubuntu 或 CentOS或者你需要网页管理界面吗告诉我具体场景我可以帮你细化配置。