将Git SSH密钥捆绑到私有AMI中

时间:2014-12-03 00:22:59

标签: linux git amazon-web-services amazon-ec2 ami

我有一个EC2实例,它运行托管在私人git仓库上的应用程序。

我需要能够从我的主服务器启动其中的许多功能。目前,我有5个固定的“工人”实例,我从主人开始/停止没有问题。每个工作人员启动,拉回购,并在启动时启动应用程序。这显然不是一个好的解决方案,我想让它更灵活(发布尽可能多的实例,等等)。配置和包是最终的,所以我觉得把它全部捆绑到AMI中感觉很好。

我有没有办法将我的git密钥捆绑到AMI中,以便启动许多类似的实例并让它们在启动时拉动并启动我的应用程序,而无需连接到每个实例并输入密码?有没有更好的办法?我已经阅读过关于cloud-init,用户数据,木偶和许多其他内容的内容,但我在这方面相当新手,并且找不到使用ssh密钥的正确示例。

1 个答案:

答案 0 :(得分:2)

我建议您将密钥与AMI分开,而不是将密钥捆绑到AMI中,因为:

  1. 如果您更改了git键,则无需构建新的AMI
  2. 有权从您的AMI启动实例的未经授权的用户无法启动您的应用
  3. 我建议使用用户数据功能。您可以选择加密密钥,并根据需要对其进行base64编码。手动或使用CLI / API启动实例时,可以传递实例启动后可以访问的密钥。有多种方法可以访问数据(python,curl等等)。我建议您使用AWS元数据服务器,因为您的实例不需要您的AWS凭据来获取用户数据。启动实例后,让您的应用程序进行以下调用,获取密钥,然后提取回购:

    curl http://169.254.169.254/latest/user-data
    

    返回您的元数据(无需凭据)。您可以选择base64decode并解密您的密钥并使用它来提取回购。如果您不想要额外的安全性,可以绕过encrypt / base64部分。