EC2:一个实例有多个ssh键?


12

是否可以创建多个私钥以SSH进入EC2实例?一般的最佳做法是什么?我们有多个用户需要通过SSH进入服务器,并且分发一个密钥就无法正常工作。除非我们更改密钥并重新分发,否则这不允许我们从能够通过SSH进入服务器的用户中删除。



当您为团队进行SSH密钥管理时,最好查看像Userify或SSH UKM这样的专用工具(免责声明:我为Userify工作)。
杰米森·贝克尔

Answers:


5

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


2
当您开始希望将SSH密钥存储在LDAP中时,该学习Kerberos了。
84104

1
我已经部署了Kerberos;就个人而言,我认为这是解决问题的解决方案,并且是一个相当棘手和烦人的解决方案。
womble

2
@Ash:问题出在问题中,而不是评论。
womble

1
我本来会忽略上述评论-但对于该网站的任何新手,我都应该明确指出,如果您的评论与给定答案的实施,澄清或误解有关,则应明确说明在注释中,以便OP可以对答案进行编辑,以澄清可能出现的任何混乱。
Mazatec

2
不,如果答案不能解决最初提出的问题,则应在注释中提出澄清问题。如果要根据答案的内容提出新问题,则应使用页面右上角的大“问问题”按钮来提出新问题。这是一个问答网站,而不是讨论论坛。
womble

6

您也可以使用标准的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中完成此操作。


1

一种更简单的方法如下所示。

对于Linux / Mac用户:

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

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

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

对于Windows用户:

  1. 使用puttygen生成密钥。
  2. 按照DigitalOcean创建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
    

此设置创建User1User2并将它们添加到sudo用户。在AWS S3的cp命令将用户从S3文件夹到他们的公钥.ssh/authorized_keys path。最后一部分是以管理员身份运行命令而无需密码。

在这里可以建议许多安全性改进。尽管在此示例中未明确使用,但将S3存储桶访问限制为特定存储桶,并了解禁用sudo中的密码使用所带来的安全隐患,以下是需要强调的几件事。根据您的特定需求明智地使用它们。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.