EC2 和密钥对 - 如何使用不同的 ssh 密钥

Posted

技术标签:

【中文标题】EC2 和密钥对 - 如何使用不同的 ssh 密钥【英文标题】:EC2 and key_pair - How to use different ssh_key 【发布时间】:2021-03-09 11:06:36 【问题描述】:

我使用 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

【问题讨论】:

【参考方案1】:

通过 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 端口暴露给互联网。

【讨论】:

“建议不要使用”登录实例 - 错字?过分“不”? 好的,我怎样才能共享 Terraform 配置,而不共享我的 ssh 密钥?

以上是关于EC2 和密钥对 - 如何使用不同的 ssh 密钥的主要内容,如果未能解决你的问题,请参考以下文章

使用不同的 SSH 密钥部署私有 EC2 实例(例如 Ec2.pem)和堡垒主机(例如 BastionKey.pem) - AWS VPC

允许用户使用密钥对通过 SSH 连接到 EC2 Linux 实例

使用 python boto 创建和下载 AWS ec2 密钥对

AWS SSH 访问密钥生成过程并安装在 EC2 上

如何获取 AWS EC2 密钥对创建日期?

将 GitHub ssh 密钥添加到 ec2 实例