大麦云服 大麦云服 立即咨询
返回列表

谷歌云USDT充值 GCP谷歌云服务器搭建私有Git库

谷歌云GCP / 2026-05-08 00:31:24

下载.png

前言:私有 Git 库的正确打开方式

很多人最初做私有 Git 库,脑子里想的是“把仓库搭起来就行”。但真正上手后你会发现:真正麻烦的不是搭建,而是后续的权限、备份、网络、安全策略、多人协作、以及你明天突然换电脑该怎么继续推代码。要是你用的是 GCP(Google Cloud Platform),那就更要在一开始把路铺平。

本文的目标很明确:在 GCP 上搭建一套私有 Git 库,让你能够用 SSH 安全访问,并且部署后整体维护成本低。我们不会把自己写进“运维地狱”,也不会用一堆花里胡哨但难排障的组件。你可以把它当作一套“可直接落地”的方案:服务器跑 Git,SSH 鉴权,仓库用裸库或带工作流的方式,最好再加上自动备份和常见故障处理。

整体方案概览:你要准备什么

先把组件清点一下(像打游戏开副本前看装备栏):

  • 一台 GCP 虚拟机:用来托管 Git 服务与仓库数据。
  • 静态公网 IP(可选但强烈建议):避免你过几天突然换 IP,所有人都得重新配。
  • 防火墙规则:开放 SSH 端口(通常是 22),其余端口尽量关掉。
  • SSH 密钥:用密钥登录,别用密码(密码就是给攻击者送外卖)。
  • Git 裸库:推荐用 bare repository 存储,让服务器不需要也不应该持有你的工作区。
  • 备份策略:至少每天(或每次推送后)把仓库打包归档,存到持久化存储或云端。

后面我们会按顺序把它搭起来。

步骤一:在 GCP 上创建虚拟机(别急着选配置,先想用途)

登录 GCP 控制台,进入 Compute Engine,创建实例(VM)。选择系统建议:Ubuntu 22.04 LTS 或类似主流发行版。你要做的是 Git 服务,不是跑科学计算,所以别上来就搞最贵的机器,性价比更香。

实例规格建议

  • CPU:1-2 核
  • 内存:1-2GB 起步(仓库不大时够用)
  • 磁盘:至少 20GB(Git 仓库会随时间膨胀,别太抠)
  • 区域/机房:选择离你和团队更近的地区,减少延迟

网络与访问:别让“公网开放所有端口”成为习惯

创建实例时,如果你不清楚网络安全怎么做,可以先默认配置跑起来。但至少要做到:只开放 SSH 端口。也可以做得更狠一点:把 SSH 端口限定在你自己的 IP 段或公司网络。

  • 防火墙:只放行 TCP/22
  • 如果你有运维习惯,后续可把 SSH 端口改成非 22 并配合白名单(不是为了安全魔法,而是为了减少噪音)

步骤二:设置防火墙与静态 IP(让你以后不用再找“新门牌号”)

如果你计划让多个人长期使用私有 Git 库,强烈建议在创建之前(或创建后)配置静态公网 IP

静态 IP 的意义很简单:你不用担心服务器重启后 IP 变来变去。否则你会体验到一种特殊的快乐:团队里有人推代码失败、你在群里发“你把远端地址改一下”,然后大家开始互相甩锅——你当然不会承认是你没固定 IP。

防火墙快速检查清单

  • 确认实例关联的防火墙规则允许从你的 IP 访问 SSH
  • 确保不开放 80/443/自定义端口(除非你后面要做 Web Git 管理)
  • 如果你只需要 SSH,那么把面越收越好

步骤三:登录服务器并准备用户与目录(用“最小权限”做事)

用你配置的方式登录 VM(一般可以直接用浏览器 SSH,或本地用 SSH)。进入系统后,我们规划存放目录:

  • 建议创建一个专用 Git 用户,例如 gitgituser
  • 仓库目录放到该用户的 home 或自定义路径,如 /home/git/repos

创建专用用户(示例)

在服务器上执行:

sudo adduser git
sudo mkdir -p /home/git/repos
sudo chown -R git:git /home/git

这一步很关键:你希望仓库数据与系统权限分离,避免“谁推代码,谁拥有系统管理员级别的权限”的尴尬局面。

步骤四:安装 Git(以及你需要的最少依赖)

Ubuntu 系统一般直接 apt 安装即可:

sudo apt update
sudo apt install -y git

安装后你可以查看版本:

git --version

如果你看到正常输出,恭喜,你已经跨过第一道门槛。

步骤五:配置 SSH(让“私有”真的有私有味道)

要让别人用 SSH 推送到你的 Git 服务器,你需要:

  • 服务器端:为 git 用户准备 .ssh 目录与权限
  • 客户端:每个人生成自己的密钥,并把公钥加到服务器

服务器端准备

sudo mkdir -p /home/git/.ssh
sudo chmod 700 /home/git/.ssh
sudo chown -R git:git /home/git/.ssh

添加客户端公钥

在客户端生成 SSH key:

ssh-keygen -t ed25519 -C "[email protected]"

然后把 ~/.ssh/id_ed25519.pub 的内容复制出来。在服务器上把公钥追加到:

sudo nano /home/git/.ssh/authorized_keys

粘贴公钥,保存后设置权限:

sudo chmod 600 /home/git/.ssh/authorized_keys
sudo chown git:git /home/git/.ssh/authorized_keys

到这里,你的“私有访问”就真正落地了:只有拥有对应私钥的人才能推送。

步骤六:创建裸库(裸库=不需要服务器工作区的那种省事)

裸库(bare repository)适合用作服务器端仓库。它不需要一个工作目录,只维护 Git 的对象与引用信息。用这种方式,你更不容易搞出“服务器上混乱的工作区文件”。

创建一个裸库

谷歌云USDT充值 假设仓库名是 my-private-repo.git

sudo -u git mkdir -p /home/git/repos
cd /home/git/repos
sudo -u git git init --bare my-private-repo.git

查看目录是否生成:

ls -la /home/git/repos/my-private-repo.git

看到 HEADobjectsrefs 等目录,就说明裸库创建成功。

步骤七:客户端推送到私有库(让它从“空盒子”变成“真的仓库”)

你有两种常见情况:要么本地已经有项目,要么你要先初始化本地仓库再推上去。

方式 A:本地已有仓库

在本地项目目录中添加远端:

git remote add origin ssh://git@你的公网IP/home/git/repos/my-private-repo.git

然后推送:

git push -u origin main

如果你的分支不是 main,换成你真实的分支名即可。推送成功后就可以在服务器上看到更新的引用。

方式 B:本地没有仓库(从零开始)

git init
git add .
git commit -m "init"
git branch -M main
git remote add origin ssh://git@你的公网IP/home/git/repos/my-private-repo.git
git push -u origin main

步骤八:多人协作与权限管理(避免“谁都能推”的理想主义)

很多人会直接把多个用户公钥都放到同一个 git 用户的 authorized_keys 里。它能用,但权限会显得有点“理想主义”。你很难精细控制“谁能推哪个仓库”。

更实用的做法是:

  • 按团队/用户创建不同 Linux 用户
  • 谷歌云USDT充值 每个用户对应自己的 SSH key
  • 仓库目录按权限隔离(读写权限不同)

当然,如果你是小团队、仓库不多,也可以先用简单方案跑起来。等需求变复杂,再升级权限模型。

仓库级权限的简单实现思路

你可以为每个仓库创建目录,并为不同用户设置文件系统权限。例如:

  • 允许某用户写入该仓库的目录
  • 其他用户只读(或不允许访问)

具体要怎么做取决于你希望的粒度。Git 本身不自带非常强的“用户/仓库权限系统”,所以你得靠 SSH 身份与文件权限组合来控制。

步骤九:备份策略(Git 不会提醒你,但灾难会很准时)

私有 Git 最怕什么?不是你配置错了参数(那还能救),最怕的是:你以为“服务器在那儿就不会出事”,结果硬盘坏了、误删了、甚至你重装系统把仓库清空了。Git 是好东西,但也只能保证它在你拥有数据时仍然能帮你追溯历史。

建议至少做两层备份:

  • 定期快照:比如每晚把裸库打包
  • 异地/云端存储:不要备份还放在同一台机器上

最省心的备份方式:tar + 上传到持久化存储

你可以写一个脚本,把 /home/git/repos 打包并上传到 GCP 的 Cloud Storage(或使用 GCP 的存储服务)。示意:

#!/bin/bash
set -e
DATE=$(date +%F)
BACKUP_NAME=repos-$DATE.tar.gz
tar -czf /tmp/$BACKUP_NAME -C /home/git repos
# 在这里调用 gsutil 或使用云厂商的上传方式
# gsutil cp /tmp/$BACKUP_NAME gs://你的bucket/备份目录/

然后用 cron 每天跑一次。这样你至少不会一夜回到解放前。

步骤十:常见踩坑与排查(把“玄学失败”变成“可解释失败”)

下面这些问题你大概率会遇到,我先替你把它们“剧透”掉。

1)SSH 登录被拒绝

  • 检查防火墙:是否允许 TCP/22
  • 检查 authorized_keys 权限:必须是 600,目录 700
  • 检查你用的用户名:客户端的 ssh user 是 git 吗?服务器确实存在这个用户吗?

2)推送时报 permission denied

  • 检查仓库目录权限:裸库所在目录是否属于 git 用户
  • 检查你是否用错了路径:客户端 remote 指向的是否真的存在该仓库

3)仓库能拉但不能推

常见情况是:

  • 服务器端仓库目录权限没给写入权限
  • 或者你误用了只读的绑定方式

修复思路:确保裸库目录对于推送用户有写权限。

4)推送很慢

  • 检查网络:跨地区可能延迟明显
  • 谷歌云USDT充值 尽量压缩/减少大文件频繁传输(大文件建议用 Git LFS 或其他方案)
  • 核对仓库是否有历史巨量对象、是否频繁推送大二进制

步骤十一:可选增强(看心情,但也很实用)

你可以根据需求加一些增强功能。注意:增强不是越多越好,先保证核心链路稳定。

1)限制 GitShell 或禁止某些操作

如果你只希望用户做 Git 推送/拉取,不希望他们在服务器上乱跑命令,可以考虑限制 shell。这样可以减少误操作风险。

2)改用更安全的 SSH 配置

  • 禁用密码登录(只允许密钥)
  • 可考虑设置 Fail2ban(如果你有一定安全需求)

这些要谨慎改动,改之前最好能理解配置项,别把自己锁在门外。

3)把仓库托管从“纯 Git”升级到“Git 服务平台”

谷歌云USDT充值 如果你后面希望有 Web 页面、Issue、Merge Request、权限体系等功能,那么可以考虑用更完整的 Git 托管平台(例如 Gitea、GitLab CE 等)。但这篇文章的核心仍然是:先把“私有 Git 库”这件事稳定跑起来。

一个小结:你已经拥有“能用且不折磨人”的私有 Git 库

我们完成了从 0 到 1 的私有 Git 搭建:GCP 上创建 VM、收口防火墙、设置静态 IP、安装 Git、配置 SSH 密钥、安全创建裸库、让客户端完成推送拉取,并且补上备份策略与常见故障排查。

如果你现在立刻要做的事是:立刻让团队能推代码——那你基本已经可以了。接下来建议你做三件“很务实”的事:

  • 把 SSH key 的管理写进团队 SOP(谁加谁删怎么做)
  • 把备份脚本和备份周期落实(别只写在脑子里)
  • 用一次演练测试恢复:模拟你误删仓库,能否从备份恢复

谷歌云USDT充值 因为 Git 的历史再长,也拯救不了你没有备份的那天。

结语:私有不只是藏起来,更是让它稳稳在那

搭建私有 Git 库的意义,不是“别人看不见”,而是“你什么时候都能拿得回来”。GCP 的弹性让你有机会把部署做得更稳定,而 SSH 密钥与仓库权限也能让私有更可靠。等你后续业务变复杂,再逐步升级也不迟。

祝你这套私有 Git 库上线后,推送顺滑、权限清晰、备份到位。愿你少遇到那种“今天不能推,明天要交付”的尴尬时刻——毕竟代码已经够忙了,运维也不该加班。

Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系