- 准备工作:更新系统,安装必要的软件。
- 安装 Git:从源码编译安装最新版本的 Git,因为 CentOS 6.5 自带的版本太旧。
- 创建 Git 用户:为 Git 服务创建一个专用的、无登录权限的系统用户,以提高安全性。
- 创建裸仓库:创建一个“裸仓库”(Bare Repository),这是用于服务器端共享的标准格式。
- 设置 SSH 公钥认证:这是最常用和最方便的方式,让客户端可以通过免密登录推拉代码。
- 设置仓库所有权和权限:确保 Git 用户可以管理仓库。
- 客户端连接测试:在另一台机器上测试克隆和推送。
详细步骤
第 1 步:准备工作
以 root 用户或使用 sudo 权限登录到你的 CentOS 6.5 服务器。

-
更新系统 虽然系统老旧,但更新一下软件包列表总是好的。
yum update -y
-
安装编译工具和依赖 我们需要从源码编译 Git,所以必须安装
gcc,make等编译工具,以及 Git 所需的依赖库,如curl,expat,gettext,openssl,zlib等。yum groupinstall "Development Tools" -y yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel -y
第 2 步:从源码安装 Git
CentOS 6.5 自带的 Git 版本(通常是 1.7.x)太旧,不支持很多现代功能,我们强烈建议从源码安装一个较新的版本(2.30.0 或更高)。
-
下载 Git 源码 我们去官方 GitHub 下载一个稳定版本的源码压缩包,这里以
30.0为例,你可以去 Git 官方 GitHub Releases 页面 找到更新的版本号。
(图片来源网络,侵删)# 切换到 /usr/src 目录,这是存放源码的常见位置 cd /usr/src # 下载指定版本的 Git 源码 wget https://github.com/git/git/archive/v2.30.0.tar.gz # 解压 tar -zxf v2.30.0.tar.gz
-
编译和安装 Git
# 进入解压后的目录 cd git-2.30.0 # 编译,prefix 指定了安装目录,我们安装在 /usr/local/git 下 # --with-curl --with-expat 等选项确保链接了我们之前安装的依赖库 make configure ./configure --prefix=/usr/local/git --with-curl --with-expat # 开始编译(这个步骤可能需要几分钟时间) make # 安装 make install
-
将新 Git 命令添加到系统 PATH 为了让系统能优先使用新安装的 Git,我们需要将其路径添加到
PATH环境变量中。# 编辑 /etc/profile 文件 vim /etc/profile
在文件末尾添加以下内容:
export PATH=/usr/local/git/bin:$PATH
保存并退出(
wq),然后让配置立即生效:
(图片来源网络,侵删)source /etc/profile
-
验证 Git 版本 检查一下是否安装成功并且版本正确。
git --version
如果看到类似
git version 2.30.0的输出,说明安装成功。
第 3 步:创建 Git 用户和仓库目录
为了安全,不要用 root 用户来运行 Git 服务。
-
创建 Git 用户 这个用户将用于管理所有 Git 仓库,并且禁止其登录 SSH。
useradd -m -s /sbin/nologin git
-m: 创建用户主目录。-s /sbin/nologin: 设置用户默认 shell,使其无法通过 SSH 登录系统。
-
创建仓库根目录 我们将在
/home/git目录下创建一个repositories文件夹来存放所有裸仓库。mkdir -p /home/git/repositories
第 4 步:创建第一个裸仓库
“裸仓库”没有工作区,它只包含 .git 目录的内容,非常适合作为共享仓库。
-
切换到 Git 用户
su - git
-
初始化裸仓库 我们来创建一个名为
my-project.git的项目。cd /home/git/repositories git init --bare my-project.git
你会看到输出
Initialized empty Git repository in /home/git/repositories/my-project.git/。 -
退出 Git 用户
exit
第 5 步:配置 SSH 公钥认证
这是最关键的一步,你需要让服务器能够识别并信任你的客户端电脑。
-
在服务器上创建
~/.ssh目录和authorized_keys文件 我们以root身份操作,然后切换所有权给git用户。# 创建 .ssh 目录 mkdir -p /home/git/.ssh # 创建或清空 authorized_keys 文件,用于存放客户端的公钥 touch /home/git/.ssh/authorized_keys # 设置正确的所有者和权限(非常重要!) chown -R git:git /home/git/.ssh chmod 700 /home/git/.ssh chmod 600 /home/git/.ssh/authorized_keys
-
在客户端生成 SSH 密钥对 这一步在你的开发机(客户端)上操作,而不是服务器。 如果你还没有 SSH 密钥,请运行:
# 邮箱地址可以随便填,但最好是你自己的 ssh-keygen -t rsa -C "your_email@example.com"
一路回车即可,会在用户主目录的
.ssh文件夹下生成id_rsa(私钥) 和id_rsa.pub(公钥)。 -
将客户端的公钥上传到服务器 将客户端上
~/.ssh/id_rsa.pub文件的内容复制出来。# 在客户端上查看并复制公钥内容 cat ~/.ssh/id_rsa.pub
回到服务器,将刚刚复制的公钥内容追加到
/home/git/.ssh/authorized_keys文件的末尾。# 在服务器上操作 echo "粘贴你的公钥内容到这里" >> /home/git/.ssh/authorized_keys
或者使用
vim编辑器手动添加。
第 6 步:设置仓库所有权和权限
确保所有仓库都属于 git 用户,并且权限正确。
# 回到 root 用户 chown -R git:git /home/git/repositories
第 7 步:防火墙设置
CentOS 6.5 默认使用 iptables 防火墙,你需要开放 SSH 端口(22)。
# 添加允许 SSH 的规则 iptables -A INPUT -p tcp --dport 22 -j ACCEPT # 保存防火墙规则 service iptables save # 重启防火墙服务 service iptables restart
客户端连接测试
你的 Git 服务器已经搭建完成!回到你的客户端电脑进行测试。
-
克隆仓库 使用
git clone命令,格式为ssh://<git用户>@<服务器IP>:<端口>/<仓库绝对路径>。# <git_user> 是我们创建的 'git' # <server_ip> 是你的服务器 IP 地址 git clone ssh://git@<server_ip>/home/git/repositories/my-project.git
第一次连接时,SSH 会提示你服务器的指纹,输入
yes即可,之后,如果配置了公钥,应该就能直接克隆下来,无需输入密码。 -
推送到仓库 进入你刚刚克隆下来的
my-project目录,进行一些修改,然后尝试推送。cd my-project echo "# Hello Git Server" >> README.md git add . git commit -m "Initial commit" git push origin master
如果推送成功,说明你的 Git 服务器完全正常工作!
