EC2:一个实例有多个 ssh 密钥吗?

EC2:一个实例有多个 ssh 密钥吗?

是否可以创建多个私钥以通过 SSH 连接到 EC2 实例?这方面的一般最佳实践是什么?我们有多个用户需要通过 SSH 连接到服务器,而分发一个密钥效果不佳。除非我们更改密钥并重新分发,否则我们无法删除能够通过 SSH 连接到服务器的用户。

答案1

当然可以;您只需将所有相关公钥放入映像中,就可以了。我更喜欢使用配置管理系统来管理 SSH 密钥;这样,即使在正在运行的系统上,撤销用户的访问权限也相当简单。还有更多……可以说是“富有想象力”……的方法来处理这个问题,例如将所有 SSH 密钥存储在 LDAP 中,像任何其他凭证一样集中 SSH 密钥。

答案2

您还可以使用标准 ssh 机制。最好的方法是用户在他们的机器上运行ssh-keygen以生成他/她的密钥对。然后他们向您发送~/.ssh/id_rsa.pub(或 id_dsa.pub,取决于所选算法),然后您将其内容添加到.ssh/authorized_keys目标主机上他们应该能够访问的用户帐户的主目录中。文件中可以有多个密钥。每行一个。就这样!相同的公钥(id_rsa.pub)可以在任意数量的主机上使用 - 它始终会识别用户。

您也可以反过来做 - 运行 ssh-keygen 并将 ~/.ssh/id_rsa(或 id_dsa)发布给用户。然后用户将文件保存到 ~/.ssh/id_rsa。只需记住将该文件的权限更改为 600(-rw-------),否则 ssh 将不会接受它。这显然不太安全,因为私钥可能是通过电子邮件分发的。

也可以使用 PuTTYgen 在 PuTTY 中完成。

答案3

更简单的方法如下。

对于 Linux / Mac 用户:

  1. 要创建公钥和私钥,请使用以下命令: $ ssh-keygen -t rsa -b 4096

  2. 将公钥上传到 S3 存储桶中的文件夹。例如:S3 > MyBucket > 密钥对

  3. 保存并保护您的私钥。

对于 Windows 用户:

  1. 使用 puttygen 生成密钥。
  2. 跟随数字海洋创建 SSH 密钥。
  3. 上传公钥至S3 > MyBucket > 密钥对
  4. 保存并保护您的私钥。

在启动任何 Linux AMI 时,以下步骤都很重要。

  1. 确保 IAM 角色具有使用 AmazonS3FullAccess 策略创建的角色。这允许实例承担访问 S3 存储桶的角色。这是从 S3 读取公钥并将其复制到用户配置文件所必需的

  2. 在配置实例详细信息 > 高级详细信息(作为文本)中的用户数据部分下添加以下代码:

    #!/bin/bash
    usermod user 1
    usermod -aG wheel user1
    mkdir /home/user1/.ssh/
    aws s3 cp s3://MyBucket    /Keypair/user1-pub.pub /home/user1/.ssh/authorized_keys
    
    useradd user2
    usermod -aG wheel user2
    mkdir /home/user2/.ssh/
    aws s3 cp s3://MyBucket   /Keypair/user2-pub.pub /home/user2/.ssh/authorized_keys
    
    sudo -i 
    echo “user1 ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers
    echo “user2 ALL=(ALL) NOPASSWD:ALL” >> /etc/sudoers
    
    yum update -y
    

此设置创建用户1用户2并将它们添加到须藤用户。亚马逊AWS S3 CP命令将用户公钥从 S3 文件夹复制到他们的.ssh/authorized_keys path。最后一部分是以管理员身份运行命令,而无需密码。

这里有很多安全改进可以推荐。虽然本例中没有明确使用,但限制 S3 存储桶对特定存储桶的访问以及了解禁用 sudo 中的密码使用的安全影响是可以强调的几件事。根据您的特定需求明智地使用它们。

相关内容