第 7 章 使用 cloud-init 配置身份验证


您可以使用 cloud-init 工具管理用户、访问权限和密码。特别是,您可以设置 cloud-init 来在虚拟机中执行以下任一操作:

  • users 部分中创建并描述用户。如果添加了 users 部分,您还必须在该部分中设置默认的用户选项。您可以修改这个部分,来向初始系统配置添加更多用户,并设置其他用户选项。
  • 通过在 users 部分中添加 sudogroups 条目,将用户配置为 sudoer。
  • 配置用户数据,以便只有您有 root 用户访问权限。
  • 强制 cloud-user 在第一次登录时更改 cloud-user 密码,来重置密码。
  • 通过创建一个用户列表来设置 root 密码。

先决条件

  • 根据数据源的要求,编辑 user-data 文件或在 cloud.cfg.d 目录中添加以下指令:

    注意

    所有用户指令都包括文件顶部的 #cloud-config,以便 cloud-init 将文件识别为包含用户指令。当您在 cloud.cfg.d 目录中包含指令时,将该文件命名为 *.cfg,且始终在文件的顶部包含 #cloud-config

流程

  • 添加用户和用户选项

    • 添加或修改 users 部分以添加用户。例如:

      #cloud-config
      users:
        - default
        - name: user2
          gecos: User N. Ame
          selinux-user: staff_u
          groups: users,wheel
          ssh_pwauth: True
          ssh_authorized_keys:
            - ssh-rsa AA..vz user@domain.com
      chpasswd:
        list: |
          root:password
          cloud-user:mypassword
          user2:mypassword2
        expire: False
      Copy to Clipboard Toggle word wrap
    • 如果您希望 cloud-user 与您指定的其他用户一起创建的默认用户,请确保将 default 添加为这个部分中的第一个条目。如果这不是第一个条目,则不会创建 cloud-user
    • 默认情况下,如果没有 selinux-user 值,用户会被标记为 unconfined_u

      注意

      这个示例将用户 user2 放在两个组中:userswheel

  • 将 sudo 用户添加到用户列表

    • 添加 sudo 条目并指定用户访问权限。例如,sudo: ALL=(ALL)NOPASSWD:ALL 允许用户进行不受限制的用户访问。
    • 添加一个 groups 条目,并指定包含用户的组:

      #cloud-config
      users:
        - default
        - name: user2
          gecos: User D. Two
          sudo: ["ALL=(ALL) NOPASSWD:ALL"]
          groups: wheel,adm,systemd-journal
          ssh_pwauth: True
          ssh_authorized_keys:
            - ssh-rsa AA...vz user@domain.com
      chpasswd:
        list: |
          root:password
          cloud-user:mypassword
          user2:mypassword2
        expire: False
      Copy to Clipboard Toggle word wrap
  • 为用户配置一个专用的 root 访问权限

    • 通过修改 name 选项,为 users 部分中的用户 root 创建一个条目:

      users:
        - name: root
      chpasswd:
        list: |
          root:password
        expire: False
      Copy to Clipboard Toggle word wrap
    • 可选:为 root 用户设置 SSH 密钥:

      users:
        - name: root
          ssh_pwauth: True
          ssh_authorized_keys:
            - ssh-rsa AA..vz user@domain.com
      Copy to Clipboard Toggle word wrap
  • 要更改默认的 cloud-init 用户名,请遵循:

    • 添加行 user: <username> ,使用新的默认用户名替换 <username> :

      #cloud-config
      user: username
      password: mypassword
      chpasswd: {expire: False}
      ssh_pwauth: True
      ssh_authorized_keys:
        - ssh-rsa AAA...SDvz user1@yourdomain.com
        - ssh-rsa AAB...QTuo user2@yourdomain.com
      Copy to Clipboard Toggle word wrap
  • 要为新用户重置密码

    • 将行 chpasswd: {expire: False} 改为 chpasswd: {expire: True}:

      #cloud-config
      password: mypassword
      chpasswd: {expire: True}
      ssh_pwauth: True
      ssh_authorized_keys:
        - ssh-rsa AAA...SDvz user1@yourdomain.com
        - ssh-rsa AAB...QTuo user2@yourdomain.com
      Copy to Clipboard Toggle word wrap
      注意
      • 这可让密码过期,因为除非您另有说明,否则 passwordchpasswd 只针对默认的用户执行操作。
      • 这是一个全局设置。当您将 chpasswd 设置为 True 时,您创建的所有用户都需要在登录时更改其密码。
  • 要设置 root 密码

    • chpasswd 部分中创建一个用户列表:

      注意

      空格很重要。请勿在您的用户列表的冒号之前或之后包括空格。如果您包含空格,密码会被设置为包括空格。

      #cloud-config
      ssh_pwauth: True
      ssh_authorized_keys:
        - ssh-rsa AAA...SDvz user1@yourdomain.com
        - ssh-rsa AAB...QTuo user2@yourdomain.com
      chpasswd:
        list: |
           root:myrootpassword
           cloud-user:mypassword
        expire: False
      Copy to Clipboard Toggle word wrap
      注意

      如果使用此方法设置用户密码,则必须在本节中设置 all passwords

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat