2016-01-07 43 views
0

我本质上是AWS noob。如何在SSH密钥泄露或丢失时保护AWS EC2实例

我让开发人员设置了一个EC2实例,并使用负载平衡器来托管基于node.js的API。他现在已经离开公司,但他仍然有私钥登录,如果他想的话。我想改变钥匙。

从我已阅读的内容中,我需要重新启动实例以获取新的密钥对。但是,如果我这样做,会丢失所有节点包和其他已安装在当前实例上的SW?负载平衡器会发生什么?我是否需要更新我的DNS信息以指向新的IP?

(一旦就位,这阵子我会创建多个密钥对的开发者使用。)

感谢, 史蒂夫

编辑:是的,我确实有私钥,可以做的一切我需要。我只是想确保他不再拥有访问权限。

+0

你还有权限访问该实例吗?只需创建一个新的密钥对并删除旧密钥对 - 在Linux级别。如果您仍然可以访问该实例,则无需在AWS级别上执行任何操作。 – mickzer

+0

正确的答案取决于您是否拥有用于启动实例的密钥对的私钥。如果您丢失了私钥,并且原始用户没有提供给您,则无法登录:您已失去对此实例的控制权。你有什么办法登录到实例吗? –

+0

开发者是否可以为您提供私钥?这将大大简化事情。 –

回答

0

所以,我已经解决了这个问题我自己,我张贴了我的情况下,这样做是可以帮助其他人。

  1. 在我的本地机器,我做了一个新的2048位RSA密钥对(一对新的也可以在AWS可以生成)
  2. 导入亚马逊控制台新的公开密钥。
  3. 创建运行实例的AMI。
  4. 启动该AMI的新(ubuntu linux)实例,并将其指向 新登录的上载公钥。
  5. 实例启动后,根据需要更新Load Balancer或DNS条目 以指向新实例。
  6. 启动服务器要运行的任何软件。
+1

您是否必须重新安装新实例上的所有软件?你提到不想在你原来的问题中这样做。我建议的步骤可以起作用,并且这可以防止您不得不从头开始重新安装所有软件,重新配置ELB等。 –

+0

不,我没有。 AMI是磁盘的映像,因此可以捕获指向该机器的确切配置。在另一种情况下重新启动AMI时,所有内容都与之前完全一样。 – gearhead

0

您可以创建一个新的密钥对,而无需创建一个新的EC2实例http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2-key-pairs.html#having-ec2-create-your-key-pair

它仍然看起来像你需要启动EC2的一个新实例(这将创建一个新的密钥),但如果你使用同一个卷(s)或快照创建重复的卷,你不应该重新加载任何软件。 https://forums.aws.amazon.com/message.jspa?messageID=245314

至于DNS,我会指出它的负载平衡器,这样你可以添加/删除池中的服务器没有DNS更改。否则,请将Elastic IP分配给服务器,这样您就可以将Elastic IP移动到下一台服务器,而无需每次都更改DNS。移动弹性是即时的,其中DNS需要时间来复制以粗略网络。希望有所帮助。

+0

您还可以创建AMI(Amazon Machine Image)以用于基于现有节点创建新的EC2。 http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AMIs.html –

+0

除非您使用新密钥重新安装新实例的堆栈,否则无法解决如何更改现有“受损”密钥。实例将保持妥协,直到在该实例上生成并安装新密钥。在现有实例上创建的任何AMI都将包含旧密钥。 –

+0

好点。谢谢。 –

5
  1. 将当前实例的AMI用于备份目的。这将重启实例,但会保留现有的IP。你不需要从ELB中删除它。如果您在更改密钥后无法重新连接,则可能需要此AMI。
  2. 以root用户身份登录现有密钥。
  3. 从贝,运行以下命令:
  4. $ ssh-keygen -t rsa -b 2048 -f user - 这会产生一个新的密钥对
  5. $ sudo su - - 如果需要,
  6. $ cp /home/ubuntu/.ssh/authorized_keys /home/ubuntu/.ssh/authorized_keys.bak - 备份现有公钥
  7. $ mv user.pub /home/ubuntu/.ssh/authorized_keys - 这将替换现有的公共在关键的authorized_keys文件
  8. $ chmod 600 /home/ubuntu/.ssh/authorized_keys - 在文件
  9. 复制私有密钥更改权限(文件名为美国呃)从$ ssh-keygen命令生成到您的本地机器并从实例中删除它。
  10. 用新的私钥连接到实例进行确认。重要提示:保持现有ssh会话处于打开状态,并使用新密钥创建新会话。

如果您在第10步有任何问题,仍然可以访问现有会话进行故障排除。

至于清理,请确保并从AWS控制台中删除旧的密钥对,并使所有凭据IF(!)无效,以使现有服务不需要运行。如果您授予对AWS控制台的开发者权限,则应重置这些凭据。

注意:这些步骤假定Ubuntu安装。如果使用的是其他Linux类型,使用正确的用户名AWS更换\ubuntu

Amazon Linux: ec2-user 
Ubuntu ubuntu 
Debian admin 
RHEL 6.4 ec2-user 
RHEL 6.3 root 
+0

很好的帮助。谢谢你,罗德里戈!所有步骤都有意义,但是,当我尝试使用新密钥登录时,仍会提示输入“id_rsa.pub”的密码,但这不是我生成和复制密钥的名称。我在这里错过了一步吗? – gearhead

+0

你在Ubuntu吗? –

+0

是的。这是一个Ubuntu实例 – gearhead