有没有办法从云形成创建节点,可以在没有密码的情况下互相ssh?

时间:2014-04-12 22:14:31

标签: amazon-ec2 amazon-cloudformation

我正在创建一个AWS Cloud格式模板,该模板设置一组节点,这些节点必须允许无密码ssh登录。即一个控制器必须能够使用其私钥登录所有从站。控制器私钥是动态生成的,因此我无权将其硬编码到模板的用户数据中或将其作为参数传递给模板。

Cloud Formation模板中是否有办法将控制器的公钥添加到从属节点的授权密钥文件中?

是否有其他方法可以使用安全组或IAMS来执行所需的操作?

2 个答案:

答案 0 :(得分:1)

您必须以user-data的形式将主服务器的公钥传递给从属节点。 Cloudformation确实支持用户数据。您可能需要弄清楚相同的语法。

换句话说,将其视为一个简单的bash脚本,它将主服务器的公钥复制到从属服务器。然后将此bash脚本作为suer-data传递,以便在第一次创建实例时执行它。

您会在上述信息中找到大量的护目镜搜索。

答案 1 :(得分:1)

我会用IAM机器角色解决这个问题。您可以授予特定计算机某些AWS权限。 IAM角色不适用于ssh访问,而是适用于AWS api调用,例如s3存储桶访问或创建ec2实例。

因此,解决方案可能如下所示:

  1. 创建一个可以写入特定S3存储桶的控制器计算机角色。
  2. 创建可从该存储桶读取的从属计算机角色。
  3. 让控制器创建一个上传公钥到存储桶中。
  4. 由于您不知道控制器是否在从属服务器之前创建,因此您必须让cloud-init每隔几分钟设置一个cron作业,如果尚未执行此操作,则从存储桶中下载密钥