我可以在 terraform 创建的 ec2 实例中执行 ssh 吗?
Posted
技术标签:
【中文标题】我可以在 terraform 创建的 ec2 实例中执行 ssh 吗?【英文标题】:Can i do ssh into my ec2 instance created by terraform? 【发布时间】:2020-04-29 16:35:51 【问题描述】:我使用 terraform 创建了一个 ec2 实例(没有 .pem 密钥)。我可以在本地系统和 ec2 实例之间建立 ssh 连接吗?
【问题讨论】:
您应该生成一个 .pem 密钥并将其添加为aws_key_pair
资源。在您的aws_instance
中使用key_name
。可以使用user data
进行设置,但不是首选。
你能分享使用的 Terraform 代码吗?
【参考方案1】:
假设您使用具有此结构的 Terraform v0.12.+
配置了一个实例:
resource "aws_instance" "instance"
ami = "$var.ami"
instance_type = "t2.micro"
count = 1
associate_public_ip_address = true
您可以进行一些额外的设置:
配置公网ipoutput
:
output "instance_ip"
description = "The public ip for ssh access"
value = aws_instance.instance.public_ip
使用现有的 ssh 公钥创建 aws_key_pair
或创建 new one
例如:
resource "aws_key_pair" "ssh-key"
key_name = "ssh-key"
public_key = "ssh-rsa AAAAB3Nza............"
像这样在instance
资源中添加key_name
:
resource "aws_instance" "instance"
ami = var.ami
instance_type = "t2.micro"
count = 1
associate_public_ip_address = true
key_name = "ssh-key"
现在需要申请运行terraform apply
和terraform output
返回公网IP
获取您的公共 IP 并运行:
ssh <PUBLIC IP>
或与公钥路径
ssh -i "~/.ssh/id_rsa.pub" <PUBLIC IP>
来源:
https://www.terraform.io/docs/providers/aws/r/instance.html https://www.terraform.io/docs/providers/aws/r/key_pair.html https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html【讨论】:
我试过了,得到了ssh: connect to host 54.212.XX.XX port 22: Operation timed out
。
@ijt 您需要验证安全组中是否打开了端口 22,请检查:docs.aws.amazon.com/AWSEC2/latest/UserGuide/…以上是关于我可以在 terraform 创建的 ec2 实例中执行 ssh 吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 terraform 在 LocalStack 上创建 EC2 实例?
如何在使用脚本创建新的 ec2 时避免 terraform 以前的 ec2 被破坏