You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法通过SSH、Ping连接用Terraform从GCP机器镜像创建的GCE实例

问题背景

通过Terraform基于GCP自定义机器镜像创建计算引擎实例,核心配置如下:

resource "tls_private_key" "sandbox_ssh" {
  algorithm = "RSA"
  rsa_bits = 4096
}

output "tls_private_key_sandbox" { value = "${tls_private_key.sandbox_ssh.private_key_pem}" }

locals {
  custom_data1 = <<CUSTOM_DATA
#!/bin/bash
CUSTOM_DATA
}

resource "google_compute_instance_from_machine_image" "sandboxvm_test_fromimg" {
  project = "<proj>"
  provider = google-beta
  name = "sandboxvm-test-fromimg"
  zone = "us-central1-a"
  tags         = ["test"]

  source_machine_image = "projects/<proj>/global/machineImages/sandboxvm-test-img-1"

  can_ip_forward = false

  labels = {
    owner = "test"
    purpose = "test"
    ami = "sandboxvm-test-img-1"
  }

  metadata = {
   ssh-keys = "${var.sshuser}:${tls_private_key.sandbox_ssh.public_key_openssh}"
 }

  network_interface {
    network = "default"
    access_config {
      // Include this section to give the VM an external ip address
    }
  }

  metadata_startup_script = local.custom_data1
}

output "instance_ip_sandbox" {
  value = google_compute_instance_from_machine_image.sandboxvm_test_fromimg.network_interface.0.access_config.0.nat_ip
}

output "user_name" {
    value       = var.sshuser
}
当前故障现象
  • 已创建的VM无论私网IP还是公网IP,均无法ping通,也无法通过netcat建立任意端口的连接
  • 配套传入、用于配置串口SSH兜底的启动脚本完全未生效
  • 由于实例创建流程依赖google-beta能力,怀疑该功能本身存在可用性、可靠性缺陷,甚至疑惑GCP当前是否不支持通过源镜像创建GCE实例
排查方向与常见配置疏漏
  • 防火墙规则拦截问题:GCP默认VPC的入站规则默认拒绝所有外部流量,即使给VM打了test标签,没有匹配的防火墙规则放通ICMP协议(ping依赖)、目标业务端口/SSH端口的入站流量,所有访问请求会被直接在VPC层面丢弃,和VM本身是否正常运行无关。
  • 自定义镜像的内置配置问题:如果生成机器镜像的源系统本身开启了OS层面的防火墙(ufw、firewalld、iptables)且默认拦截所有入站流量,会直接阻断所有外部连接;另外如果镜像内没有安装、启用GCP Guest Agent,传入的ssh-keys元数据、metadata_startup_script都不会被系统识别执行,自然串口SSH的兜底方案也不会生效。
  • 网络配置校验:检查default网络下对应子网的路由、访问配置是否正常,确认VPC没有配置过度严格的出站访问限制;同时在GCP控制台核对实例的网卡状态,确认实例启动过程中是否正常获取到了私网地址,避免因为镜像配置异常导致网卡未正常初始化、Terraform输出的公网IP为无效值。
  • Provider版本兼容问题:google_compute_instance_from_machine_image本身是GCP稳定支持的GA能力,不存在beta功能不可用的问题,但如果本地使用的google-beta provider版本过旧,可能出现创建流程中网络配置写入不全、元数据返回异常的问题,导致实际实例的网络配置和Terraform定义的配置不匹配。

注:目前GCP通过机器镜像创建GCE是完全成熟的稳定能力,不存在功能层面的可用性缺失,绝大多数无法连接的场景都是上述配置疏漏导致,而非功能本身的可靠性bug。


内容的提问来源于stack exchange,提问作者Sumit Khanna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 21:45:04