如何使用AWS CloudFormation创建一个用户并将对应的pub文件复制到authorized_key中?

问题描述 投票:0回答:1

我在使用 AWS Cloud Formation 创建一个用户并将名为 authorized_keys 的相应 pub 文件复制到实例上的 .ssh 文件夹中时遇到了麻烦。我这样做,是因为我想使用SSH与该用户进行连接。当我检查创建的实例的SystemLog时,似乎并没有创建用户,也没有在.ssh目录下复制任何文件作为authorized_keys,这是我的代码。

LinuxEC2Instance:
Type: AWS::EC2::Instance
Metadata:
  AWS::CloudFormation::Init:
    config:
      users:
        ansible:
          groups:
            - "exampleuser"
          uid: 1
          homeDir: "/home/exampleuser"
      files:
        /home/exampleuser/.ssh/authorized_keys:
          content: !Sub |
            '{{ resolve:secretsmanager:
              arn:aws:secretsmanager:availability-zone:account-id:secret:keyname:
                SecretString:
                  keystring }}'
          mode: "000600"
          owner: "exampleuser"
          group: "exampleuser"

我是不是遗漏了什么,所以用户被创建了,文件也被复制了?

authentication ssh amazon-cloudformation
1个回答
0
投票

要使用 AWS::CloudFormation::Init 你必须明确地从你的 UserData 使用 cfn-init 帮助脚本。

这样一个例子是 UserData 对于Amazon Linux 2的操作如下。

      UserData: 
        Fn::Base64: !Sub |
                #!/bin/bash -xe

                yum update -y

                yum install -y aws-cfn-bootstrap

                /opt/aws/bin/cfn-init -v \
                  --stack ${AWS::StackName} \
                  --resource LinuxEC2Instance \
                  --region ${AWS::Region}           

如果有问题,那么必须登录到实例,并检查日志文件,如。/var/logs/cloud-init-output 以查找错误信息。

© www.soinside.com 2019 - 2024. All rights reserved.