CentOS 搭建 Git 私有代码服务器(git+ssh 方式,企业内网源码仓库)
一、前言日常开发多人协作、内网项目代码托管不想依赖 Gitee/GitHub 公网仓库可基于 Linux 自带gitSSH 协议搭建私有 Git 服务器。采用系统用户 ssh 鉴权无需额外 Gitlab 重型软件轻量化、部署简单、权限可控适合中小企业内网小型代码仓库。二、环境准备系统CentOS7/CentOS8关闭防火墙或放行 22 端口 (SSH 默认端口)1. 安装 git 依赖bash运行yum install git -y # 查看版本 git --version2. 创建 git 专属系统用户专门管理代码仓库禁止登录 shellbash运行# -s /sbin/nologin 禁止ssh登录服务器系统仅用作git传输 useradd -s /sbin/nologin git # 可选设置密码ssh密钥方式可不用密码 passwd git3. 创建仓库根目录约定所有私有仓库统一放在/home/git/git_repo/bash运行mkdir -p /home/git/git_repo chown git:git /home/git/git_repo三、初始化空 Git 裸仓库服务端必须裸仓 bare无工作区裸仓库特点只有版本索引数据没有项目源码文件专门用于远程 push/pullbash运行# 切换到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方式 2SSH 免密密钥登录生产推荐无密码客户端生成密钥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。