Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AmazonLinux:在创建ami映像时更改默认ec2用户_Linux_Amazon Ec2_Amazon - Fatal编程技术网

AmazonLinux:在创建ami映像时更改默认ec2用户

AmazonLinux:在创建ami映像时更改默认ec2用户,linux,amazon-ec2,amazon,Linux,Amazon Ec2,Amazon,我正在尝试使用AmazonLinuxDistro和一个自定义用户/密码创建一个ami映像。 我所做的(通常): 使用AmazonLinuxAMI创建一个amazon实例 使用用户登录ec2用户 创建新用户,例如admin 更改用户的密码admin 将用户admin添加到控制盘组:usermod-aG-wheel-admin 将用户admin添加到sudoers文件:sudo echo“admin ALL=NOPASSWD:ALL”>/etc/sudoers.d/admin 允许ssh用户/通过

我正在尝试使用AmazonLinuxDistro和一个自定义用户/密码创建一个ami映像。 我所做的(通常):

  • 使用AmazonLinuxAMI创建一个amazon实例
  • 使用用户登录
    ec2用户
  • 创建新用户,例如
    admin
  • 更改用户的密码
    admin
  • 将用户
    admin
    添加到控制盘组:
    usermod-aG-wheel-admin
  • 将用户
    admin
    添加到sudoers文件:
    sudo echo“admin ALL=NOPASSWD:ALL”>/etc/sudoers.d/admin
  • 允许ssh用户/通过登录
    /etc/sshd/sshd\u config
    (permitrotlogin yes
    )
  • 重新启动ssh服务:
    /etc/init.d/ssh restart
  • 当我尝试使用用户
    admin
    -成功登录时。但是当创建一个 从新创建的ami创建新ami映像和新实例, 通过用户
    管理员
    ec2用户登录
    -
    权限被拒绝
    (公钥)。
    我错过了什么
问题在于,当您使用创建的AMI启动实例时,EC2服务不知道您所做的更改。我使用内置于Amazon Linux和其他官方AMI上的Cloud Init找到了解决该问题的方法,完整教程可在此处找到:

简而言之,以下是您需要做的:

  • 使用Amazon Linux AMI启动一个实例,在用户数据字段中放置以下行:
  • 使用admin用户连接到实例,并在
    /etc/cloud/cloud.cfg.d/defaults.cfg
    处创建一个文件,该文件的内容与启动实例时使用的用户数据文件的内容相同

  • 关闭实例并创建AMI

  • 享受吧


  • 您还可以使用新用户名更新实例中的
    /etc/cloud/cloud.cfg.d/00_defaults.cfg
    ,而不是创建新文件。我只想创建一个新文件,使更改更加透明,无论如何,选择权归你。

    Stack Overflow是一个解决编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许这会是一个更好的提问的地方。也许这会对你有所帮助
    #cloud-config
    system_info:
      default_user:
        name: admin