它是什么:免费 VPS 的边界
先把期待放平:这里的免费 VPS不是无限量、不限配置的独立服务器,而是 GCP 免费层级里的一台小型 VM。像借来的小电脑:CPU、内存、硬盘按套餐给,机房和每月出站数据量也有上限。够练 Linux、跑小博客,不适合下载站、代理流量或长期高负载。
边界通常是指定区域、指定机型、有限系统盘、有限出站流量额度:只有部分区域和 e2-micro 这类小规格计入免费,默认盘别调大,出站最易漏看。规则可能变化,别背旧教程数字,以控制台当前说明为准,看到「每月免费额度」再创建。
三个坑:把「试用赠金」当「始终免费」;选了范围外区域/机型还以为自动免单;做完忘关停,又留额外磁盘、静态 IP。免费的是符合条件的那一小份,不是项目里所有资源。
等第 8 步 SSH 登录到 VM 后,复制这条自检命令看清「实物」。它只读不改,不用管理员权限:
echo "== CPU =="; lscpu | grep -E 'Model name|CPU(s)'; echo "== RAM =="; free -h; echo "== DISK =="; df -h /
为什么:控制台写规则,命令看实物;看到 1~2 核、约 1GB 内存、几十 GB 盘别慌,很正常。别粘到 macOS/Windows 本机,那里没有这两个查看工具,会报「找不到命令」;只在登录后的 Linux VM 里跑。
本文 8 步从准备账号、建项目、确认结算,到选区域机型、设磁盘防火墙、配密钥,最后 SSH 登录,每步都能在控制台复现。不跳步、不先讲调优,零基础走一遍就懂云服务器全貌:由什么组成、钱从哪来、怎么连、怎么删干净。
解决什么问题:低成本练手与轻负载
按「8 步开出你的免费 VPS」拿到的是低成本、轻负载的练习机,不是生产服务器。它解决的是新手没有真实服务器练习 Linux、网站部署、服务启停、日志排查和基础安全配置的问题:在自己电脑里学,一遇到公网访问、端口、权限、防火墙就对不上号。免费 VPS 的价值,是给你一台能连公网、能装环境、能改崩再重建的真实小机器。
它适合个人博客、测试环境、接口调试、定时脚本和学习 gcloud 命令,不适合高并发生产业务,也别跑商城大促、视频转码、爬虫集群或重要客户数据。免费额度通常只覆盖指定区域、低配机型和少量磁盘;选错配置、忘记关机、留下静态 IP 和快照,都可能从“免费”变成账单。
开机器前先做两件小事。第一,统一资源命名,后面创建、查看、删除都引用同一组变量,避免练习资源和别的资源混在一起:
export VPS_NAME="lab-free-vps-01"
export ZONE="us-central1-a"
export LABELS="owner=me,purpose=lab,env=test"
gcloud config get-value project
为什么?名字里有 lab、free 和编号,过几天也能看出它是练习机;最后一行确认当前项目,防止开错地方。小白容易踩的坑:别叫 test、vps 这种太泛的名字;环境变量只在当前终端有效,换窗口要重新复制;如果输出的不是项目 ID,先停下。
第二,拿项目 ID 和结算账号,再到控制台“结算 > 预算和提醒”建预算告警;如果命令提示先选择项目,就先别继续:
PROJECT_ID="$(gcloud config get-value project)"
if [ -z "$PROJECT_ID" ] || [ "$PROJECT_ID" = "(unset)" ]; then
echo "请先在 gcloud 里选择项目,再复制这段命令"
else
echo "$PROJECT_ID"
gcloud billing projects describe "$PROJECT_ID" --format='value(billingAccountName)'
fi
预算范围选当前项目,金额填 1 美元或 10 元这类小值,提醒设 50%、90%、100%。预算告警不是自动关机,但会在误开高配、多建磁盘、忘删资源时提前发邮件,比月底账单更早发现。这样通过预算告警和资源命名,把试错成本压低,同时养成云上运维的成本意识:资源都有名字、有归属、有费用边界。
怎么上手:8 步开出你的免费 VPS
先记住一句:免费 VPS 的额度只覆盖指定组合。选错区域、磁盘或放开端口,常见后果就是扣费和被扫描。
- 第 1 步:准备账号、结算和项目。注册或登录谷歌云账号,绑定结算方式,新建独立项目;先在“结算 > 预算和提醒”设低预算,开启预算提醒与账单告警。坑:以为免费就不用看账单。
- 第 2 步:确认免费层级。进控制台确认免费层级条件、可用区域、机型和系统盘额度,以页面为准;常见是指定美国区域、E2 小机型、标准盘。坑:照旧教程选错区域、SSD、Windows 或大硬盘。
- 第 3 步:创建 VM。Compute Engine > VM 实例 > 创建实例,选符合免费层级的区域、e2-micro 类小机型、Debian/Ubuntu 受支持镜像,磁盘别超额度。坑:随手“升配”。
- 第 4 步:配置防火墙。VPC 网络 > 防火墙里入站只放行 SSH 的 TCP 22,来源尽量填自己公网 IP/32(搜索“我的 IP”可查);网站上线时再按需补开网页端口 80、443。原因:全端口会被扫;坑:服务开了却忘了外网规则。
- 第 5 步:密钥登录。在本机或 Cloud Shell 生成密钥,打印公钥后上传到实例 SSH 密钥/元数据,私钥别外传。优先用密钥登录,避免弱口令被扫描;坑:传成私钥。
- 第 6 步:首次连接。启动实例,记录外部地址(外部 IP),用控制台 SSH 按钮完成首次连接;执行下面命令确认系统可登录。坑:外部 IP 可能变,连不上先查 22 端口、用户名和实例状态。
- 第 7 步:基础加固。按 Debian/Ubuntu 更新系统、创建普通用户、减少直接用 root,并检查时区和基础监控状态。坑:没更新就装软件、时区不对;改登录用户前别关唯一窗口。
- 第 8 步:验证留档。另开窗口验证登录和轻量服务状态;保存连接信息、配置记录和费用检查清单。坑:开完不管;每天看预算邮件、账单报表,核对磁盘、静态 IP、快照、流量和机型。
mkdir -p "$HOME/.ssh"
test -f "$HOME/.ssh/gcp_free_vps" || ssh-keygen -t ed25519 -f "$HOME/.ssh/gcp_free_vps" -C "gcp-free-vps" -N "" -q
cat "$HOME/.ssh/gcp_free_vps.pub"
whoami
hostname
ip -brief address
sudo apt update && sudo apt upgrade -y
id dev || sudo adduser --disabled-password --gecos "" dev
sudo usermod -aG sudo dev
sudo timedatectl set-timezone Asia/Shanghai
timedatectl status
systemctl is-active google-guest-agent
free -h
df -h
sudo apt install -y nginx curl
sudo systemctl enable --now nginx
systemctl is-active ssh
systemctl is-active nginx
curl -I http://127.0.0.1
{
date
hostname
whoami
systemctl is-active ssh
systemctl is-active nginx
} | tee "$HOME/vps-setup-record.txt"
与替代方案对比:别只看零价格
在「8 步开出你的免费 VPS」里,别把“0 元”当全部答案。免费 VPS 适合练手、搭小博客、跑脚本;若要放客户网站或全天在线,要先看它省了钱,也省掉了哪些余量。
- 和付费云服务器比:GCP 免费 VPS 胜在低成本、真实云环境,控制台、SSH、防火墙、公网 IP、账单都真能用;但配置小,区域、流量、磁盘、快照和可用性限制更多。
- 和本地虚拟机比:它更接近线上部署,能练 SSH、防火墙、外部地址和账单管理;代价是要联网,还要管账号、项目、权限和付款方式。
- 和其他云试用套餐比:它更适合长期学习和轻量实验,不必总盯倒计时;但试用金、到期规则、是否停用、支持范围和收费项要逐项核对。
- 和一键托管平台比:自由度更高,装什么、开哪个端口都自己定;但系统更新、安全、备份、故障排查也全归你。
连上 SSH 后,把下面整段复制到黑窗口回车即可,都是查看命令,不会删文件。为什么要看?内存、磁盘、运行时间、网卡地址,才是你实际能用的东西,比宣传页靠谱。
echo "系统:"; uname -a
echo "CPU/内存:"; free -h
echo "磁盘:"; df -h
echo "运行时间:"; uptime
echo "网卡地址:"; ip -4 addr show
- 坑 1:有 IP 不等于网站能访问,还要配云防火墙和本机防火墙,别把端口全开。
- 坑 2:免费额度不等于静态 IP、快照、Windows 镜像、超额流量都免费;先查账单和配额。
- 坑 3:一键平台会替你更新、备份、排错,VPS 不会;先备份再改配置,不用的实例及时关掉。
最佳实践:把免费机用稳用省
免费机最怕两件事:被扫端口和密码爆破,以及“以为免费、其实闲置资源一直计费”。先养成习惯:每次创建、改配置、开 IP 前,在控制台看「结算 > 账单」和「预算与提醒」,把 50%、80%、100% 告警发到常用邮箱;选好项目后打开 Cloud Shell 跑一遍体检。
gcloud compute firewall-rules list --format='table(name,allowed,sourceRanges,targetTags)'
gcloud projects get-iam-policy "$(gcloud config get-value project)" --format='table(bindings.role,bindings.members)'
gcloud billing accounts list --format='table(displayName,name,open)'
gcloud compute addresses list --format='table(name,region,address,status,users)'
gcloud compute addresses list --global --format='table(name,address,status,users)'
gcloud compute disks list --format='table(name,zone,sizeGb,status,users)'
gcloud compute snapshots list --format='table(name,creationTimestamp,storageBytes)'
防火墙只留必要端口,例如网站 80/443、SSH 22;22 最好限制到自己 IP,看到 sourceRanges 是 0.0.0.0/0 又开放全端口就关掉。IAM 列表里每人用自己的账号,按需要给 Viewer、Compute Instance Admin 等最小权限,别共享 root(根)账号或 Owner。小白坑:把 root 密码、私钥发群里,出事无法追责,成员离开还要全量改密码。
SSH 改用密钥。先在本机或 Cloud Shell 执行,把 cat 出来的一整行公钥粘到控制台的 SSH 密钥/实例元数据;务必开新终端确认能登录,且不要关闭旧窗口,否则禁用密码后可能把自己锁在外面。
mkdir -p "$HOME/.ssh"
ssh-keygen -t ed25519 -f "$HOME/.ssh/gcpok_free_vps" -C "gcpok-free-vps"
cat "$HOME/.ssh/gcpok_free_vps.pub"
确认成功后,在 VPS 里执行下面命令;若 sshd -t 报错,保持窗口别关,按提示改,配置测试通过才会重启。
sudo mkdir -p /etc/ssh/sshd_config.d
printf '%sn' 'PasswordAuthentication no' 'PermitRootLogin no' 'KbdInteractiveAuthentication no' | sudo tee /etc/ssh/sshd_config.d/00-gcpok-hardening.conf >/dev/null
sudo sed -i 's/^#?[[:space:]]*PasswordAuthentication .*/PasswordAuthentication no/' /etc/ssh/sshd_config
sudo sed -i 's/^#?[[:space:]]*PermitRootLogin .*/PermitRootLogin no/' /etc/ssh/sshd_config
sudo sed -i 's/^PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config.d/50-cloud-init.conf 2>/dev/null || true
sudo sshd -t && (sudo systemctl restart ssh || sudo systemctl restart sshd)
体检列出的外部地址、磁盘、快照要逐个看:状态 RESERVED、users 为空的地址/磁盘,以及过期快照,确认不用就在控制台删除,避免闲置资源计费。小白坑:VM 停了磁盘仍可能收费,预留静态 IP 没挂上也收费;别复制网上带 –quiet 的批量删除命令,容易误删。
定期更新系统与软件包、保留配置记录,重要数据另做备份。下面命令适合 Debian/Ubuntu;备份包必须再下载到本地、网盘或对象存储,不要把免费 VM 当唯一副本。小白常只截图不记版本,回滚时不知道改过什么。
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y
mkdir -p "$HOME/free-vps-notes"
{ date -Is; uname -a; dpkg-query -W -f='${Package} ${Version}n'; } > "$HOME/free-vps-notes/packages-$(date +%F-%H%M%S).txt"
cp /etc/ssh/sshd_config "$HOME/free-vps-notes/sshd_config-$(date +%F-%H%M%S).bak"
echo "$(date -Is) 本次改动:更新系统并备份配置" >> "$HOME/free-vps-notes/change-log.txt"
mkdir -p "$HOME/backups"
tar -czf "$HOME/backups/home-$(date +%F-%H%M%S).tar.gz" --exclude='./backups' --exclude='./free-vps-notes' -C "$HOME" .
上线前先看服务条款:免费额度常限制区域、机型、出站流量和商用范围,Always Free 也不等于试用金项目永久免费。然后只对自己的服务做轻负载压测,默认测本机 80 端口;服务没起会显示失败,先修服务再测,别拿别人域名练手。
sudo apt update && sudo apt install -y apache2-utils
ab -n 100 -c 5 http://127.0.0.1/
看 CPU、内存、错误日志是否正常即可。遇到流量突增、配额异常或账单变化,先停机再排查;SSH 连不上就去控制台点停止。
sudo shutdown -h now
停机后看监控、配额和账单明细;停机不等于删除磁盘、IP、快照,排查完再决定清理。小白坑:一边被刷流量一边查日志,费用会继续跑。
常见问题(FAQ)
免费 VPS 真的完全不用花钱吗?
免费额度有条件,超出区域、磁盘、流量或升级配置就可能计费。
为什么开通前还要绑定结算方式?
谷歌云用它验证身份和处理超额费用,务必配合预算告警与账单提醒。
小白不会命令行也能完成吗?
可以,控制台能完成大部分步骤,SSH 只需按文章复制几条基础命令。
这台 VM 适合长期放生产网站吗?
不建议,配置与额度有限,更适合学习、测试和低访问量个人项目。
忘记关闭实例会不会产生费用?
可能会,尤其用了非免费资源时;应设预算告警并定期清理闲置资源。
不想自己折腾 GCP?我们提供云平台代维护、上云迁移与账单代付服务,一对一技术支持。
