在新的EC2实例上首次登录时是否可以使用非默认用户登录

55次阅读
没有评论

问题描述

在启动EC2实例后,想知道是否必须始终使用默认用户通过SSH登录实例的第一次登录。或者是否可以使用非默认用户首次登录新实例。
用户还想知道在使用AWS CLI2或Terraform启动EC2实例时,是否可以指定要创建的用户及其身份验证方法(通过指定已为AWS创建的EC2私钥/公钥对),以便首次登录实例时使用非默认用户。或者创建新实例的非默认用户只能在默认用户的登录会话下完成。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

在新启动的EC2实例中,存在的用户是您从镜像中启动的实例所存在的用户。
Linux发行版提供的镜像通常只有一个默认用户,但您可以使用其他用户构建自己的自定义镜像,并从您的镜像中启动EC2服务器。
此外,还可以使用cloud-init配置在启动时创建用户(正如评论中已经指出的)。

方案2

使用user-data配置可以指示cloud-init在启动时配置非默认用户。
您可以通过提供user-data配置给您的EC2实例,指示cloud-init配置非默认用户。
以下是一个示例的user-data配置,用于在启动时创建一个名为myuser的非默认用户:

#!/bin/bash
useradd -m -s /bin/bash myuser

在上面的示例中,我们使用useradd命令创建了一个名为myuser的用户,并指定了用户的主目录和shell。
请注意,使用user-data配置创建的用户将在实例启动时自动创建,并且可以在首次登录时使用该用户进行登录。

方案3

使用自定义AMI创建包含非默认用户的镜像。
如果您希望在启动EC2实例时使用非默认用户登录,可以通过创建自定义AMI来实现。以下是一些步骤:
1. 在一个已经存在的EC2实例上创建一个非默认用户,并配置该用户的身份验证方法(如SSH密钥)。
2. 使用AWS管理控制台或AWS CLI创建一个AMI,将该实例作为源实例。
3. 使用新创建的AMI启动新的EC2实例。
在上述步骤中,您可以使用已经存在的EC2实例来创建一个非默认用户,并将其配置为使用所需的身份验证方法。然后,您可以使用该实例创建一个AMI,并在启动新的EC2实例时使用该AMI。新的EC2实例将包含您创建的非默认用户,并且您可以使用该用户进行首次登录。
请注意,使用自定义AMI创建的实例将包含您在源实例上创建的所有用户和配置。因此,请确保在创建AMI之前,删除或禁用不需要的用户和配置。

方案4

使用AWS CLI或Terraform在启动EC2实例时指定非默认用户。
使用AWS CLI或Terraform启动EC2实例时,可以通过指定user-data来配置非默认用户。以下是一个示例使用AWS CLI启动EC2实例并指定非默认用户的命令:

aws ec2 run-instances --image-id ami-xxxxxxxx --instance-type t2.micro --key-name my-key-pair --user-data '#!/bin/bash\nuseradd -m -s /bin/bash myuser'

在上面的示例中,我们使用user-data参数指定了一个bash脚本,该脚本在实例启动时创建了一个名为myuser的非默认用户。
请注意,使用user-data配置创建的用户将在实例启动时自动创建,并且可以在首次登录时使用该用户进行登录。

方案5

使用Terraform在启动EC2实例时指定非默认用户。
如果您使用Terraform来管理您的基础设施,您可以使用user_data参数来指定非默认用户。以下是一个示例使用Terraform启动EC2实例并指定非默认用户的配置:

resource "aws_instance" "example" {
  ami           = "ami-xxxxxxxx"
  instance_type = "t2.micro"
  key_name      = "my-key-pair"
  user_data     = "#!/bin/bash\nuseradd -m -s /bin/bash myuser"
}

在上面的示例中,我们使用user_data参数指定了一个bash脚本,该脚本在实例启动时创建了一个名为myuser的非默认用户。
请注意,使用user_data配置创建的用户将在实例启动时自动创建,并且可以在首次登录时使用该用户进行登录。

正文完