You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu AWS自定义用户authorized_keys安装及ubuntu用户创建时机问题

关于Ubuntu服务器默认用户与SSH密钥配置的问题

1. Ubuntu用户是在哪个阶段创建的?

Ubuntu用户是官方Ubuntu AMI的初始构建阶段就已经存在的默认用户。所有AWS提供的官方Ubuntu镜像,在发布时就预装了这个用户作为默认登录用户——这是Ubuntu官方镜像的标准配置,和AWS的后续操作无关。

当你用Packer基于官方Ubuntu AMI制作自定义AMI时,除非你在Packer的provisioner脚本里主动删除这个用户,否则它会被完整保留到你的自定义AMI中。而你通过cloud-config创建的my_user是额外添加的用户,不会影响原有默认用户的存在。

2. 如何让AWS将authorized_keys安装到自定义用户目录下?

要让AWS把SSH密钥放到你的自定义用户my_user的目录下,有两种常用且灵活的方法:

方法一:启动实例时通过User Data指定目标用户

在启动EC2实例时(无论是通过CLI、控制台还是Launch Template),提供一段cloud-config格式的User Data,明确指定要将密钥添加到my_user的SSH授权列表中:

#cloud-config
users:
  - name: my_user
    ssh_authorized_keys:
      - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ...  # 替换成你的公钥内容

当实例启动时,cloud-init会自动处理这段配置,将公钥写入/home/my_user/.ssh/authorized_keys,同时确保目录和文件的权限正确(.ssh目录权限700,authorized_keys权限600)。

方法二:修改自定义AMI的cloud-init默认配置(适合固定用户的场景)

如果你希望所有从这个AMI启动的实例都默认把密钥放到my_user下,可以在Packer构建AMI时,修改cloud-init的默认用户配置:

在Packer的provisioner中执行以下命令,将默认用户设置为my_user:

echo "default_user: my_user" >> /etc/cloud/cloud.cfg

这样后续从该AMI启动实例时,AWS的cloud-init会自动将密钥放到my_user的目录下,而不是默认的ubuntu用户。不过这种方法不够灵活,如果你需要不同实例用不同用户,还是推荐方法一。

注意:如果同时设置了User Data和AMI的默认用户,User Data中的配置优先级更高,会覆盖AMI的默认设置。

内容的提问来源于stack exchange,提问作者max

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:30:27