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

如何通过Terraform配置允许Amazon EC2控制台连接实例

用Terraform配置EC2安全组支持AWS控制台SSH连接

要通过AWS控制台的「连接」按钮SSH登录EC2实例,你需要在Terraform中配置安全组入站规则,允许AWS Instance Connect服务的流量访问22端口。具体实现步骤如下:

  1. 获取对应区域的Instance Connect前缀列表
    AWS每个区域都有专属的EC2 Instance Connect前缀列表,通过Terraform的data资源可自动获取该列表ID,无需手动查找:
data "aws_prefix_list" "instance_connect" {
  name = "com.amazonaws.${var.aws_region}.ec2-instance-connect"
}

提示:将var.aws_region替换为你实际使用的AWS区域变量,或直接写死区域名称(比如us-east-1)。

  1. 配置安全组入站规则
    在你的EC2安全组资源中,添加针对22端口的入站规则,引用上述获取的前缀列表ID:
resource "aws_security_group" "ec2_instance_sg" {
  name        = "ec2-instance-connect-sg"
  description = "Allow EC2 Instance Connect SSH access"
  vpc_id      = var.vpc_id # 替换为你的VPC ID

  # 允许Instance Connect服务访问SSH端口
  ingress {
    from_port       = 22
    to_port         = 22
    protocol        = "tcp"
    prefix_list_ids = [data.aws_prefix_list.instance_connect.id]
  }

  # 默认允许所有出站流量(可按需调整)
  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }

  tags = {
    Name = "EC2-Instance-Connect-SG"
  }
}
  1. 关联安全组到EC2实例
    确保你的EC2实例资源关联这个配置好的安全组:
resource "aws_instance" "example" {
  ami           = var.ami_id # 替换为支持Instance Connect的AMI(如Amazon Linux 2、Ubuntu 20.04+)
  instance_type = "t2.micro"
  vpc_security_group_ids = [aws_security_group.ec2_instance_sg.id]

  # 其他实例配置项...
}

额外说明

  • 你的EC2实例AMI需要预装ec2-instance-connect包,主流AWS官方AMI(如Amazon Linux 2、Ubuntu)默认已包含该组件。
  • 使用前缀列表的方式比手动配置CIDR更安全,因为前缀列表会由AWS自动维护更新,无需你手动调整IP范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 11:27:04