开启FirewallD未放行自定义SSH端口,GCP CentOS虚拟机无法SSH登录如何解决
GCP CentOS虚拟机FirewallD阻断SSH连接的解决方案
以下是可直接落地的操作方案:
方案1:通过GCP串行控制台直接登录操作
- 进入GCP云控制台的目标虚拟机详情页,下滑找到「串行端口」配置区域,勾选「启用连接到串行端口」保存配置
- 编辑虚拟机配置,在「自定义元数据」中添加键为
startup-script的条目,值填写echo "root:自定义的临时强密码" | chpasswd,保存后重启虚拟机 - 回到虚拟机详情页,点击「连接到串行控制台」,在弹出的终端窗口中用root账号+刚才设置的临时密码登录
- 登录后执行以下命令放通自定义SSH端口(将下方
12345替换为你实际使用的自定义SSH端口):firewall-cmd --permanent --add-port=12345/tcp firewall-cmd --reload - 确认可正常SSH登录后,删除之前添加的
startup-script元数据,关闭串行端口访问权限,避免安全隐患。
方案2:通过启动脚本自动修复规则,无需登录虚拟机
- 编辑目标虚拟机配置,在「自定义元数据」中添加键为
startup-script的条目,值根据需求二选一:- 仅放通对应SSH端口:将
12345替换为实际自定义端口,填写firewall-cmd --permanent --add-port=12345/tcp && firewall-cmd --reload - 暂时关闭FirewallD:填写
systemctl stop firewalld && systemctl disable firewalld
- 仅放通对应SSH端口:将
- 保存配置后重启虚拟机,等待2-3分钟启动完成后即可正常通过SSH连接
- 登录确认业务正常后,删除临时添加的
startup-script元数据,按需调整FirewallD规则即可。
- 编辑目标虚拟机配置,在「自定义元数据」中添加键为
方案3:挂载系统盘到其他实例修改配置
如果上述两种方案均无法生效,可通过磁盘挂载的方式修复:- 停止故障虚拟机,卸载其系统磁盘
- 在同一可用区创建一台正常运行的CentOS临时虚拟机,将刚卸载的故障系统盘挂载为数据盘
- 登录临时虚拟机,挂载磁盘分区后执行
chroot进入故障系统的根目录,直接修改FirewallD规则或关闭FirewallD开机自启 - 配置完成后卸载磁盘,将磁盘重新挂载回原故障虚拟机作为系统盘,启动后即可正常连接。
内容的提问来源于stack exchange,提问作者jsssmj
相关产品推荐
相关产品推荐

