我可以在 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 applyterraform 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 实例?

Terraform - 在每个可用区创建 ec2 实例

如何在使用脚本创建新的 ec2 时避免 terraform 以前的 ec2 被破坏

Terraform 重新部署 EC2 实例

如何通过 terraform 创建磁盘类型为“NVMe SSD”的 EC2 实例

为 EC2 实例创建签名证书时如何防止循环依赖?