EC2 和 key_pair - 如何使用不同的 ssh_key

EC2 and key_pair - How to use different ssh_key

我使用 Terraform 脚本在 AWS 上构建了一个小平台。目前,有一个 EC2,我可以在其中进行 ssh。 为此,我在 aws_instance 中填充了变量 key_name

如果我想让同事也通过 ssh 连接到实例,我该如何添加另一个 ssh_key? key_name 接受字符串而不是列表。

resource "aws_instance" "airflow" {
  ami                    = "ami-0d3f551818b21ed81"
  instance_type          = "t3a.xlarge"
  key_name               = "admin"
  vpc_security_group_ids = [aws_security_group.ssh-group.id, aws_security_group.airflow_webserver.id]
  tags = {
    "Name" = "airflow"
  }
  subnet_id = aws_subnet.subnet1.id
}

resource "aws_key_pair" "admin" {
  key_name   = "admin"
  public_key = file(var.public_key_path)
}

output "public_airflow_ip" {
  value = aws_instance.airflow.public_ip
}

通过API的配置只允许一对密钥。但是,您可以手动(或通过脚本)使用自己的密钥添加第二个用户帐户。请看一下How do I add new user accounts with SSH access to my Amazon EC2 Linux instance?

话虽如此,建议使用 AWS Systems Manager Session Manager 而不是直接 SSH 登录实例。这样您就可以通过 IAM 策略控制对实例的访问,并且不需要将 SSH 端口公开到互联网。