+86 189 8218 1436 周一至五 10:00-22:00

6. 登录服务器:GCP 小白实战指南

TL;DR:面向小白讲清 GCP 登录服务器是什么、何时用、怎么用 gcloud 与 SSH 连接 VM,并给出安全对比与上手清单。

它是什么:登录服务器到底连到哪里

登录服务器,说白了就是用自己电脑的终端,或浏览器弹出的 SSH 窗口,进入远端 VM 的命令行。屏幕在你面前,但命令跑在 GCP 的某台机器里。在 GCP 中,常见目标是 Compute Engine 虚拟机实例;连上后,你查看的是这台 VM 的文件,可以在这里安装软件、看日志、查进程、排查服务。它不是登录网站后台,也不是打开云控制台点按钮,更不代表这台服务器归你所有,只是获得一次被授权的操作会话。

对新手最省事的是用控制台的 SSH 按钮,因为它会自动处理浏览器连接和密钥,少踩配置坑:

  1. 打开 GCP 控制台,进入 Compute Engine 的“VM 实例”列表。
  2. 找到状态为“正在运行”的实例,点右侧“SSH”。
  3. 等浏览器命令行窗口出现提示符,复制下面这组命令;它们以常见 Linux VM 为例。
whoami
hostname
pwd
ls -la
ps aux | head

为什么要先跑?因为黑框都长得像,这几行分别确认当前用户、机器名、当前目录、目录文件和正在跑的进程,帮你判断“我确实在远端机器里”,也避免多台 VM 时改错对象。

能不能连上,还同时看四件事:身份是否被认可、网络是否可达、SSH 密钥或 OS Login 是否正确、项目 IAM 权限是否允许。少一项,就可能一直转圈、报权限不足或连接被拒绝。

  • 别在本地终端跑同样命令就以为连上了。本地也会显示用户和文件,要看窗口是否来自 GCP 的 SSH 按钮。
  • 看到 VM 列表不等于能进系统。实例没开机、防火墙或网络没放通,都会失败。
  • 连上后别急着删文件、改密码或照抄高权限命令。生产机上先确认路径和对象。

解决什么问题:为什么必须会登录服务器

学会登录服务器,不是为了记命令,而是为了在网站出问题时能进到“现场”。云控制台里的 VM、公网 IP、磁盘、防火墙像仪表盘,只能告诉你“好像不对”;网站打不开、服务异常、磁盘满、端口不通时,真正原因常藏在 VM 里面:哪条日志报错、哪个进程卡死、哪个目录占满空间、服务有没有监听端口。只有登录进去,才看得到。

登录成功后,先别急着改配置或重启。在终端窗口里粘贴下面这组只读命令,它们只查看状态,不会改文件,适合零基础先建立印象:

whoami
hostname
uptime
df -h
free -h
ps aux --sort=-%cpu | head
ss -tulpen
sudo journalctl -xe --no-pager | tail -n 50

为什么先看这些:前两行确认当前账号和机器名,避免把测试机当生产机;第三行看是否刚重启;第四、五行对应磁盘和内存;第六行找最耗资源的进程;第七行看端口监听;最后一行看最近日志。排查要按“先观察,再判断,再动手”,比一上来重启更不容易冲掉报错现场。

  • 坑一:端口不通不一定是防火墙,也可能是程序没启动,或只监听本机地址;要用端口和日志一起判断。
  • 坑二:磁盘满常是日志、上传目录或缓存变大;先看整体占用,别直接删除看不懂的文件。
  • 坑三:看到权限提示别慌,系统日志常需要管理员权限;但不要乱用最高权限执行网上复制来的命令。
  • 坑四:实例多时最容易登录错机器,动手前先核对机器名和 IP。

日常运维中,部署项目、更新配置、创建用户、安装依赖,也都要通过登录服务器完成。控制台能创建机器、开端口,却不能替你把代码放进目录、改环境变量、安装运行环境、给同事开账号、让服务读取新配置。这些动作最终都发生在服务器终端里。

对小白来说,登录服务器把抽象的云资源变成可操作的服务器终端:磁盘变成路径,服务变成进程,访问变成端口,故障变成日志。以后理解运维流程,就是先看状态、找到原因、小步修改、再验证结果。会登录,才算真正开始管理自己的网站。

怎么上手:第一次连接 GCP VM

先到「Compute Engine > 虚拟机实例」确认 VM 已经建好、状态是「正在运行」,抄下五项:项目 ID(不是项目名)、区域(如 asia-east1-b,是可用区)、实例名(区分大小写)、外部地址、登录用户名。用户名拿不准,等下看浏览器终端里 @ 前面的名字,别默认填 root。先抄是因为选错项目或区域最常报「找不到实例」。

第一次点实例行的 SSH > 在浏览器窗口中打开 最省事:GCP 会临时生成并注入密钥,不用装工具、配本地密钥或填 IP;看到黑色终端就成功了。坑是弹窗被拦、或状态没变绿就连点,先允许弹窗再刷新。

本地连接先装 Google Cloud CLI(gcloud)。下面会引导选项目和默认区域,照抄的选,别一路回车跳过:

gcloud init
gcloud compute instances list --filter='status=RUNNING'

第二条核对名字、区域和外部地址;再执行:

gcloud compute ssh "$(gcloud compute instances list --filter='status=RUNNING' --format='value(name)' --limit=1)"

它取当前项目第一台运行实例;有多台就把 $(...) 换成记下的名字并补 --zone "区域",免得连错。外部地址为「无」时,浏览器 SSH 仍可试,本地直连多半不通。

失败别改密码,依次查:

  1. 防火墙:VPC 入站放行 tcp:22,来源别只写公司网。
  2. 端口 22:实例内部也没挡;浏览器能进、本地不行多半是这里。
  3. 权限:账号要有 Compute Engine SSH 相关 IAM 角色,开了 OS Login 更明显。
  4. 密钥:最后核对 ~/.ssh/google_compute_engine、元数据公钥和用户名。

顺序别倒:网络没通时,改密钥不会有反应。

与替代方案对比:浏览器、密钥、密码怎么选

先给结论:临时排障和新手练习用浏览器 SSH;长期管用SSH 密钥对;密码登录能不用就不用。

  • 浏览器 SSH:在 GCP 控制台点“SSH”就开网页终端,上手最快,不用配密钥;但依赖控制台权限,IAM 或网络策略一变就可能连不上。别以为关网页就关机,服务器仍可能计费。
  • SSH 密钥对:公钥放服务器,私钥留自己电脑,像锁和钥匙;更适合长期使用,安全性高,不用暴露可猜密码。私钥别发微信、别提交 GitHub,还要定期轮换:先加新公钥、确认能登录、再删旧公钥。
  • 密码登录:最直观,输账号密码就行,但风险更高,弱密码、撞库、暴力破解都盯它。生产环境通常关闭,改用密钥、堡垒机或身份代理;后两者就是先到统一门口验身份,再进服务器,好审计、好收权。

长期用密钥可直接照做。命令适合 macOS、Linux 或 Cloud Shell;前几条在生成私钥的终端执行,最后一条登录服务器后执行,别粘错地方。

ls -la ~/.ssh

看到 id_ed25519 别覆盖,旧私钥可能正给别的服务器用;没有就生成,再查看公钥。一路回车用默认路径,问是否覆盖就选否;只复制 .pub 内容到服务器或控制台,千万别复制私钥。

ssh-keygen -t ed25519 -C "gcpok-login"
cat ~/.ssh/id_ed25519.pub

按默认路径生成后收紧权限,因为权限太开放时 SSH 会认为私钥可能被偷看而拒绝使用:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519

确认密钥能登录后,在服务器检查:

sudo sshd -T | grep passwordauthentication

输出 passwordauthentication yes 说明还允许密码。生产环境应让管理员关闭,并统一走密钥、堡垒机或身份代理。小白最容易踩的坑,是没保留另一个登录窗口就先关密码,结果把自己锁在门外。

最佳实践:连接前后都要做的安全检查

连接前先做“减法”:服务器钥匙只发给真的要登录的人。在 GCP 控制台里别把 Owner 当登录权限随手发,只给要部署、排障的人加 OS Login 或项目级 SSH 密钥;能看日志就不要给 sudo,更不要全组共用一把私钥。有人离开项目或团队,当天就在云平台账号、SSH 密钥和服务器本地 authorized_keys 三处回收。为什么?钥匙越少,泄漏面越小。常见坑是只删控制台账号,旧公钥还躺在服务器里,对方照样能进。先复制下面命令盘点:

sudo awk -F: '($3>=1000){print $1, $3, $6}' /etc/passwd
sudo find /home /root -path '*/.ssh/authorized_keys' -type f -exec sh -c 'echo "== $1 =="; nl -ba "$1"' _ {} ;
sudo last -n 20

看到不认识的名字或公钥,按输出路径删掉对应账号和那一行,别把文件清空,免得把自己也踢出去。

第一次连上后,别急着装面板或跑来路不明脚本。先用现有管理员账号完成三件事:建普通用户 → 更新系统 → 备份关键配置,以后平时用普通用户,只有改系统时才按需 sudo。一直用 root 很危险,敲错路径可能删库;备份是为了改坏 SSH、sudoers 后还能回滚。下面按常见 Debian/Ubuntu 写,其他系统先拿测试机练:

sudo adduser deploy

按提示设置只有你知道的密码,其他信息回车跳过。

sudo usermod -aG sudo deploy
sudo install -d -m 700 -o deploy -g deploy /home/deploy/.ssh
if [ -f "$HOME/.ssh/authorized_keys" ]; then
  sudo cp "$HOME/.ssh/authorized_keys" /home/deploy/.ssh/authorized_keys
  sudo chown deploy:deploy /home/deploy/.ssh/authorized_keys
  sudo chmod 600 /home/deploy/.ssh/authorized_keys
fi
sudo apt-get update
sudo env DEBIAN_FRONTEND=noninteractive apt-get upgrade -y
sudo mkdir -p /root/backups
sudo tar -czf /root/backups/etc-config-$(date +%F-%H%M).tar.gz /etc/ssh /etc/sudoers /etc/passwd /etc/group /etc/apt/sources.list /etc/apt/sources.list.d
sudo ls -lh /root/backups

坑:不要关掉当前 SSH 窗口,先开新窗口用 deploy 测试成功;若登录失败,多半是公钥没复制,保留旧窗口再补。备份也别只放服务器,重要项目再下载到本机或云存储。

最后收紧入口并开启补丁。云控制台防火墙和服务器内防火墙都要查,别只改一处;入站默认拒绝,只让当前来源 IP 连 22,数据库、测试端口不要对 0.0.0.0/0 开放。这样能减少全网扫描和爆破;日志用于追查异常,补丁用于修已知漏洞。

sudo apt-get update
sudo env DEBIAN_FRONTEND=noninteractive apt-get install -y ufw unattended-upgrades
sudo ufw --force reset
sudo ufw default deny incoming
sudo ufw default allow outgoing
MY_IP="$(echo "$SSH_CLIENT" | awk '{print $1}')"
test -n "$MY_IP" || { echo "没有读到当前 SSH 来源 IP,请不要继续启用防火墙"; exit 1; }
sudo ufw allow from "$MY_IP" to any port 22 proto tcp
sudo ufw --force enable
sudo ufw status numbered
sudo journalctl _COMM=sshd -n 50 --no-pager
printf '%sn' 'APT::Periodic::Update-Package-Lists "1";' 'APT::Periodic::Unattended-Upgrade "1";' | sudo tee /etc/apt/apt.conf.d/20auto-upgrades
sudo systemctl enable --now apt-daily.timer
sudo systemctl enable --now apt-daily-upgrade.timer
sudo env DEBIAN_FRONTEND=noninteractive apt-get upgrade -y

坑:宽带 IP 会变,换网络前先加新规则;用 GCP IAP 或堡垒机时,来源不是你家宽带。要提供网站再单独放行 80/443;业务机更新可能重启服务,尽量选维护窗口,以后每月重复升级和看日志即可。

常见问题(FAQ)

没有外部地址还能登录服务器吗?

可以。可用浏览器 SSH、身份代理或堡垒机中转,不必直接暴露公网入口。

浏览器 SSH 连接失败怎么办?

先看 VM 是否运行、权限是否足够、防火墙是否放行,再重试并查看错误提示。

小白应该先学 gcloud 还是 SSH 密钥?

先用浏览器 SSH 建立感觉,再学 gcloud 和密钥管理,最后做权限与审计。

登录服务器会不会把网站弄坏?

只查看日志一般不会;修改配置前先备份,并一次只改一处,方便回滚。

为什么不建议长期使用密码登录?

密码容易被猜解或泄露,密钥配合最小权限和日志更适合长期运维。

不想自己折腾 GCP?我们提供云平台代维护、上云迁移与账单代付服务,一对一技术支持。

查看代维服务 →

发表评论