CentOS 搭建 Git 私有代码服务器(git+ssh 方式,企业内网源码仓库)
·
一、前言
日常开发多人协作、内网项目代码托管,不想依赖 Gitee/GitHub 公网仓库,可基于 Linux 自带git+SSH 协议搭建私有 Git 服务器。采用系统用户 + ssh 鉴权,无需额外 Gitlab 重型软件,轻量化、部署简单、权限可控,适合中小企业内网小型代码仓库。
二、环境准备
系统:CentOS7/CentOS8,关闭防火墙或放行 22 端口 (SSH 默认端口)
1. 安装 git 依赖
bash
运行
yum install git -y
# 查看版本
git --version
2. 创建 git 专属系统用户(专门管理代码仓库,禁止登录 shell)
bash
运行
# -s /sbin/nologin 禁止ssh登录服务器系统,仅用作git传输
useradd -s /sbin/nologin git
# 可选设置密码(ssh密钥方式可不用密码)
passwd git
3. 创建仓库根目录
约定所有私有仓库统一放在 /home/git/git_repo/
bash
运行
mkdir -p /home/git/git_repo
chown git:git /home/git/git_repo
三、初始化空 Git 裸仓库(服务端必须裸仓 bare,无工作区)
裸仓库特点:只有版本索引数据,没有项目源码文件,专门用于远程 push/pull
bash
运行
# 切换到git用户操作
su -s /bin/bash git
# 创建项目demo.git仓库
cd /home/git/git_repo
git init --bare demo.git
# 权限自动归属git用户
四、客户端两种拉取推送方式
方式 1:账号密码 SSH 拉取(简易测试)
客户端电脑(Windows/Git Bash、Linux)克隆代码
bash
运行
git clone git@服务器IP:/home/git/git_repo/demo.git
# 新增文件提交推送
cd demo
echo "test code" > readme.md
git add .
git commit -m "first commit"
git push origin main
方式 2:SSH 免密密钥登录(生产推荐,无密码)
- 客户端生成密钥
bash
运行
ssh-keygen #一路回车生成 ~/.ssh/id_rsa、id_rsa.pub
- 客户端公钥推送至 git 用户密钥文件
bash
运行
# 客户端执行,把公钥传到服务端git用户
ssh-copy-id git@服务器IP
- 再次 clone、push 无需输入密码
五、多项目新建仓库规范
每一个项目单独创建一个xxx.git裸仓
bash
运行
su -s /bin/bash git
cd /home/git/git_repo
git init --bare blog.git
六、避坑总结
- 服务端仓库必须
git init --bare裸仓,普通仓库无法远程推送; - git 用户
/sbin/nologin不能改 shell,否则存在服务器登录安全风险; - 目录权限异常:
chown -R git:git /home/git/git_repo修复; - 如需精细化权限(不同开发只能访问指定仓库),可搭配
git-shell。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)