是否可以创建多个私钥以通过 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 用户:
要创建公钥和私钥,请使用以下命令:
$ ssh-keygen -t rsa -b 4096
将公钥上传到 S3 存储桶中的文件夹。例如:S3 > MyBucket > 密钥对
保存并保护您的私钥。
对于 Windows 用户:
- 使用 puttygen 生成密钥。
- 跟随数字海洋创建 SSH 密钥。
- 上传公钥至S3 > MyBucket > 密钥对
- 保存并保护您的私钥。
在启动任何 Linux AMI 时,以下步骤都很重要。
确保 IAM 角色具有使用 AmazonS3FullAccess 策略创建的角色。这允许实例承担访问 S3 存储桶的角色。这是从 S3 读取公钥并将其复制到用户配置文件所必需的
在配置实例详细信息 > 高级详细信息(作为文本)中的用户数据部分下添加以下代码:
#!/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 中的密码使用的安全影响是可以强调的几件事。根据您的特定需求明智地使用它们。