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

如何通过SSH公钥登录Terraform创建的AWS EC2实例?

如何通过SSH公钥登录Terraform创建的AWS EC2实例?

嘿,我来一步步教你搞定这个事儿,全程都是实操步骤,不搞虚的:

第一步:先准备好你的SSH密钥对

要是你本地还没生成SSH密钥对,先在终端跑这个命令:

ssh-keygen -t rsa -b 4096

按提示一路回车就行,生成后找到你的公钥文件(默认是~/.ssh/id_rsa.pub),把里面的内容全复制下来,后面要用到。

第二步:编写完整的Terraform配置

下面是能直接用的配置,我已经补全了你之前截断的部分,记得把你刚才复制的公钥内容替换到public_key字段里:

resource "aws_security_group" "ec2_sg" {
  name   = "ec2-access"
  vpc_id = aws_vpc.main.id

  ingress {
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = ["0.0.0.0/0"]  # 划重点:生产环境别用这个!换成你自己的公网IP段才安全
  }

  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]  # 允许所有出站流量,按需调整就行
  }
}

resource "aws_key_pair" "ssh-key" {
  key_name   = "ssh-key"
  public_key = "ssh-rsa AAAAB3NzaC1..."  # 这里替换成你自己的公钥内容
}

# 部署在公共子网的EC2实例
resource "aws_instance" "ec2" {
  ami           = "ami-04b70fa74e45c3917" # Ubuntu 24.04 LTS Noble Numbat
  instance_type = "t2.micro"
  subnet_id     = aws_subnet.public.id
  security_groups = [aws_security_group.ec2_sg.id]
  associate_public_ip_address = true
  key_name         = aws_key_pair.ssh-key.key_name  # 关联我们创建的SSH密钥对
}

这里几个关键地方要留意:

  • 安全组开了22端口,这是SSH登录的基础;
  • aws_key_pair会把你的公钥上传到AWS,EC2实例启动时会自动把这个公钥加到~/.ssh/authorized_keys里;
  • EC2通过key_name关联密钥对,这样才能用对应的私钥登录。

第三步:应用Terraform配置

在配置文件所在的目录,依次执行这几个命令:

# 初始化Terraform环境
terraform init

# 检查配置有没有问题
terraform plan

# 确认无误后创建资源,输入yes确认
terraform apply

等个几分钟,资源就创建好了。

第四步:SSH登录EC2实例

资源创建完成后,你会看到EC2的公网IP(也可以去AWS控制台找),然后用下面的命令登录:

# 替换成你的私钥路径和EC2公网IP
ssh -i ~/.ssh/id_rsa ubuntu@<你的EC2公网IP>

⚠️ 注意两个坑:

  • 私钥权限必须设为400,不然SSH会报错,执行chmod 400 ~/.ssh/id_rsa就行;
  • Ubuntu系统默认用户名是ubuntu,要是用Amazon Linux系统,用户名得换成ec2-user。

额外提醒

生产环境里绝对不能把安全组的cidr_blocks设为0.0.0.0/0,改成你自己的公网IP段(比如192.168.1.1/32),这样只有你自己的IP能SSH访问,安全多了。

备注:内容来源于stack exchange,提问作者Yasserius

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 08:18:10