GCP充值 GCP谷歌云修改SSH端口

谷歌云GCP / 2026-04-27 18:05:59

{ "description": "本文以“GCP谷歌云修改SSH端口”为主题,手把手讲清楚:在不同场景(默认OS、使用自定义防火墙、以及可能的安全策略)下,如何把SSH从22端口换到自定义端口。文章涵盖从创建防火墙规则、修改sshd配置、放行端口到验证连接,并顺带提醒常见踩坑:忘改防火墙、控制台仍用22、重启策略与运维风险。", "content": "

前言:为什么要改SSH端口?

很多人第一次接触服务器时,都会自然地把“安全”想得像“装个门锁”那么简单:锁住就行。然后很快你会发现,互联网这张大网并不在意你“锁得多用心”,它更在意你的门有没有按时关、钥匙孔有没有对着全世界。

SSH(默认22端口)就是典型的“钥匙孔位置默认写死”。改SSH端口,并不能从根本上替代密钥登录、最小权限、防火墙、Fail2ban之类的安全措施,但它确实能降低大量低成本扫描的噪声,顺便让脚本扫不到你(至少不会那么轻松)。

在 GCP(Google Cloud Platform)上改SSH端口,核心并不复杂:你需要同时完成两件事——系统里让sshd监听新端口,以及在 GCP 防火墙里放行新端口。缺一不可,否则你改了也等于“人在办公室把门改成了新号码,但快递公司还按旧号码来送”。

下面我们就按“能跑起来”为目标,一步步来。

\n\n

先确认你的环境:你改的到底是哪种SSH?

在GCP上,SSH常见有三种“触点”:

1)你用浏览器/控制台点“SSH”按钮登录

GCP控制台的SSH按钮通常会用它自己的方式建立连接,有时会与本机端口设置有差异。为了避免“你在服务器改了端口,但控制台仍然按旧逻辑连”,建议你改端口后优先用“本地ssh”连接,或确保你的连接方式与端口一致。

2)你从本地电脑用 ssh 命令连

这种最直观。你改多少端口,本地命令就得跟着改。

3)你有外部转发/代理/跳板机

如果你中间还有负载均衡、堡垒机、VPN设备,那么端口可能还要在链路上对应调整。

本文以最常见的场景为主:直接对GCE虚拟机的系统sshd进行端口修改,并通过 GCP防火墙规则开放端口。

\n\n

GCP里改SSH端口的总体流程

把事情拆开做,你会更不容易翻车:

  1. 选一个新端口(例如 2222),避免使用过于“热门”的端口。
  2. 在虚拟机内部修改 /etc/ssh/sshd_config,把 sshd 监听端口从22改为新端口。
  3. 重载/重启 sshd 服务,确保监听成功。
  4. 在 GCP 控制台创建或修改防火墙规则,放行新端口(来源IP按需限制)。
  5. 在本地用 ssh -p 新端口 验证登录。
  6. 确认没有残留旧规则、没有让自己“锁在门外”。

听起来像“改配置+开端口+测试”。是的,真正难的不是操作步骤,而是顺序验证:你要确保新端口先能连上,而不是先改完系统再发现防火墙还没放行。

\n\n

步骤一:选择新端口

选择一个非22端口很容易,但我建议你考虑两点:

  • 尽量避免常见服务端口:比如 80/443、3306、5432等。
  • 避免端口冲突:在虚拟机上确保该端口未被其他服务占用。

例如你可以选择 2222。别太迷信“越高越安全”,端口只是降噪,不是魔法。

\n\n

步骤二:在虚拟机内修改 sshd 配置

登录到虚拟机(最好是你仍然能用旧端口22进入的情况下进行)。然后编辑 sshd 配置文件。

常见路径通常是:

  • Debian/Ubuntu:/etc/ssh/sshd_config
  • CentOS/RHEL:/etc/ssh/sshd_config 或类似路径

用文本编辑器打开,比如:

sudo nano /etc/ssh/sshd_config

在文件里找到以 Port 开头的行。典型情况可能是:

  • #Port 22(被注释)
  • Port 22(明确写死)

你需要把它改成:

Port 2222

注意几件小事:

  • 如果文件里有多处Port配置,以最终生效的为准。建议只保留一条明确的Port行,避免“改了半天却发现另一个地方又覆盖了”。
  • 确保没有其它相关限制比如 Match 段里对端口有特殊配置。大多数情况下不需要管,但如果你之前做过定制,别当它不存在。
\n\n

顺手检查:是否允许密码登录(安全建议)

GCP充值 改端口只是第一步。你可以顺手把 SSH 安全性也加固一下,比如确保密钥登录开启,密码登录关闭(视你的实际需求)。

sshd_config 里你可能会看到:

  • PasswordAuthentication yes

如果你想更安全,可以改成:

  • PasswordAuthentication no

如果你不确定,建议至少保持现状先把端口改通,再决定后续安全策略。毕竟“安全”不是为了更快失败。

\n\n

步骤三:重载或重启 sshd 服务

改完配置后,必须让 sshd 重新读取配置,否则你改了也只是“写在纸上”。

常见命令:

  • Ubuntu/Debian:sudo systemctl reload sshsudo systemctl restart ssh
  • CentOS/RHEL:sudo systemctl restart sshd

更稳妥的方式是先用 restart(虽然停顿一小会儿,但可控)。例如:

sudo systemctl restart sshd

然后检查 sshd 是否在监听新端口:

sudo ss -ltnp | grep 2222

如果你看到类似输出,说明监听成功。你也可以进一步确认进程确实是 sshd:

sudo lsof -iTCP:2222 -sTCP:LISTEN

如果这里没有监听,别急着去改GCP防火墙。先把“服务器端活没活”确认了。

\n\n

步骤四:GCP 防火墙放行新端口(重点!)

很多人会在这里“翻车”。原因通常是:你在虚拟机里把sshd改到了2222,但在GCP的防火墙里仍然只放行了22。结果就是:外面连不进来,服务器里面看起来也一切正常——你会非常怀疑人生。

所以顺序很关键:防火墙放行新端口

\n\n

查看当前防火墙规则

在 GCP 控制台中进入:

  • VPC 网络(VPC network)
  • 防火墙(Firewall)

找到与你的实例相关的规则。很多项目会有默认的“允许SSH(22)”规则。

\n\n

新增或修改允许规则

你需要新增一个规则,允许入站到 2222 端口。

关键参数建议这样设:

  • 方向(Direction):Ingress(入站)
  • 目标(Targets):可以选择“网络标记(target tags)”或“服务账号/实例”。如果你不确定,选与你实例匹配的方式。
  • 协议和端口(Protocols and ports):选择 TCP,然后输入 2222
  • 源过滤(Source IP ranges):强烈建议限制到你的公网IP/办公网段,例如 x.x.x.x/32 或你的VPN网段。

为什么要限制来源?因为你现在改变了端口,不代表你把攻击面关闭了。你只是把“门牌号”从22换成了2222。如果还对全世界开放,依然有人会试探。

\n\n

如果你想保留22端口怎么办?

有些人会改到新端口后,短时间内保留22,方便回退或排障。注意:这意味着 22 仍然可能被连入(前提是防火墙放行了22)。如果你计划最终完全关闭22,就要在验证新端口稳定后,逐步移除或收紧22的规则。

\n\n

步骤五:验证连接(先本地测,别用直觉)

当你完成服务器端监听、以及GCP放行新端口后,就该用本地验证。

假设你的虚拟机公网IP或域名是 YOUR_IP,新端口是 2222,用户名是 youruser,那么命令应类似:

ssh -p 2222 youruser@YOUR_IP

如果你用的是私钥:

ssh -i /path/to/key -p 2222 youruser@YOUR_IP

验证应关注几件事:

  • GCP充值 是否连得上:没有超时、没有“connection refused”。
  • 是否能正常认证:不会卡在“Permission denied”。
  • 日志是否正常:如果失败,先看服务器日志。
\n\n

服务器端查看SSH日志(排障利器)

常见命令:

  • Ubuntu/Debian:sudo journalctl -u ssh --since "10 minutes ago"
  • CentOS/RHEL:sudo journalctl -u sshd --since "10 minutes ago"

你也可以查看是否有监听端口错误或配置语法问题。

\n\n

常见问题与踩坑清单

下面这些坑非常常见,我把它们写在前面,省得你“改完才发现不对”。

\n\n

坑1:只改了sshd_config,没有在GCP防火墙放行

表现:本地连接超时,或者一直握手失败。服务器日志可能没什么异常,因为连接根本没到达。

GCP充值 解决:新增/修改防火墙规则,放行 2222。

\n\n

坑2:改了端口,但你用的是控制台“SSH按钮”

表现:控制台仍旧尝试走22,导致连不上。

解决:用本地 ssh 指定端口,或者确认控制台是否有端口自定义(不同GCP工作流可能不同)。最稳的是:自己用 ssh -p 新端口 验证。

\n\n

坑3:sshd配置语法错误,导致重启后服务没起来

表现:你重启sshd后,端口不监听,连接失败。

解决:重启前先检查配置语法:

GCP充值 sudo sshd -t

如果返回错误信息,就按提示修正。

\n\n

坑4:端口被其他服务占用

表现:改完后发现监听失败或端口被占用。

解决:检查占用者,例如:

sudo ss -ltnp | grep 2222

如果已经有进程占用,换端口或停止冲突服务。

\n\n

坑5:忘了收紧22端口,结果22还在放行

表现:你以为已经“改掉了22”,但外部扫描仍能探测到22。

解决:在验证新端口通畅后,移除/收紧22对应防火墙规则。

\n\n

最佳实践:不仅改端口,还要把安全做扎实

如果你只是改端口,安全确实会提升一点点,但也别把它当“终点”。我建议你至少再做三件事,性价比非常高:

  1. 仅允许你的公网IP访问SSH:Source IP ranges 尽量缩小。
  2. 尽量使用密钥登录,关闭密码登录(可选,但推荐)。
  3. 使用fail2ban或类似策略:防止暴力破解即使换端口也继续发生。

另外,如果你运维频繁,考虑使用堡垒机/Identity-Aware Proxy/Private Service Connect等更体系化的方式。但那是更高级的题,今天先把“端口改通”这个基础功练好。

\n\n

回滚方案:如果你不小心把自己锁外面怎么办?

这是每个改端口的人都要面对的恐惧:万一没连上,我怎么进去改回来?

实践建议:

  • 在修改前,尽量确保你当前连接是稳定的,并且准备好你可以通过控制台(或GCE的串行控制台/救援方式)进入。
  • 如果你的账号有足够权限,GCP控制台通常还能提供某种形式的访问能力,例如临时重新配置或使用系统修复通道。
  • 如果你有“自动化部署/配置管理”(例如脚本、Ansible),更能降低人工操作风险。

具体“救援通道”在不同项目和权限配置下会不一样,所以不要指望我在这里一句话就替你“保证能进”。但至少你要记住:把变更做成可回滚

\n\n

一个推荐的执行顺序(你照着做就行)

为了让你少走弯路,我把顺序整理成“照做版”:

  1. 选定新端口(如2222)。
  2. 在虚拟机上修改 /etc/ssh/sshd_config,把 Port 22 改为 Port 2222
  3. 执行 sudo sshd -t 检查配置语法。
  4. 重启 sshd:sudo systemctl restart sshd(或 sudo systemctl restart ssh)。
  5. 检查监听:sudo ss -ltnp | grep 2222
  6. 在 GCP 防火墙新增允许 2222 入站规则,source范围限制到你的IP。
  7. 本地执行 ssh -p 2222 user@YOUR_IP 验证。
  8. 确认无误后,再考虑删除/收紧原22的防火墙规则。

注意:你不需要“先删22再连新端口”。那是爽文式操作,真实世界不建议。

\n\n

结语:改端口只是开始,稳定才是王道

GCP上修改SSH端口,本质就是两边同时配合:服务器端监听要改网络侧防火墙要放行。当你把这两件事都做对,并通过ssh -p新端口验证成功,你就完成了一个很实用的小安全升级。

最后送你一句“运维格言”(虽然听起来像段子,但很真实):
改配置前先想好回滚;连不上时先怀疑网络再怀疑自己;当你发现问题时,通常不是“没有修复”,而是“修复了但另一边没跟上”。

愿你这次改端口,既快又稳,不用靠“开着控制台祈祷”。

" }
下载.png
Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系