【问题标题】:How do I set a custom password with Cloud-init on Ubuntu 20.04?如何在 Ubuntu 20.04 上使用 Cloud-init 设置自定义密码?
【发布时间】:2020-08-18 20:37:01
【问题描述】:

最近,我通过将我的配置安装在映像中来让 Cloud-Init 工作。这一切都很好,它工作。如果我破坏了配置,它会告诉我。它没有告诉我的是为什么我不允许登录。

我尝试使用echo possible | mkpasswd -m sha-512 -s 创建自己的密码,并复制快速入门页面上的示例:https://wiki.ubuntu.com/FoundationsTeam/AutomatedServerInstalls/QuickStart

都不行。我也尝试过设置自定义用户名。不会改变任何东西。默认的ubuntu:ubuntu 也不可用。 ubuntu 和空白都不是。

我正在使用什么:

https://releases.ubuntu.com/20.04/ubuntu-20.04-live-server-amd64.iso

https://wiki.ubuntu.com/FoundationsTeam/AutomatedServerInstalls/QuickStart

# echo possible | mkpasswd -m sha-512 -s                                    
$6$nqZiIASVBA.iF$9nubU0ImWVrv4XhtEq9XhSh9UYNFQ7yC9Lf7A.uheSlJ3cgI5d9ltkUwRq.X8lAwoQuLAMem6v.gJNGYwk5XA0

以下配置及其提供的密码,或以上;

#cloud-config
autoinstall:
  version: 1
  identity:
    hostname: ubuntu-server
    password: "$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0"
    username: ubuntu

我也尝试过这样设置用户块:

https://gist.github.com/leogallego/a614c61457ed22cb1d960b32de4a1b01#file-ubuntu-cloud-virtualbox-sh-L46-L56

我的要求:

  • 更好地说明预期的散列类型。
  • 有效的用户数据配置

【问题讨论】:

    标签: ubuntu cloud-init ubuntu-20.04


    【解决方案1】:

    我正面临同样的问题。通过在安装过程中使用 shell,我看到没有创建任何用户,因此我们在重新启动后无法登录。我不知道为什么,要么是 subiquity 中的错误,要么是缺少有关如何正确使用它的文档。 Neverteless,我能够在我的自动安装文件中使用这个技巧创建一个用户:

      late-commands:
        - useradd -m -R /target -u 1001 ubuntu
        - echo "ubuntu:ubuntu" | chroot /target /usr/sbin/chpasswd
        - usermod -R /target -aG sudo ubuntu
    

    【讨论】:

    • 看到你的回答让我再次搜索,自发布此消息以来,很多人抱怨 cloud-init 的实现。然而,我发现另一个人做类似事情的配置(Vbox 中的 20.04),他们的用户部分包括一些我以前没见过的选项。添加外壳并将 lock-passwd 设置为 false 似乎可以解决此问题。这是一次多么愉快的旅程。
    • @MiesvanderLippe 您是否碰巧有指向您所指的 Vbox 配置页面的链接?我看到了你的另一个答案 - 你有没有找到“修复”ubuntu 帐户的方法?
    • 我在 VirtualBox 中使用它; superuser.com/questions/827977/use-cloud-init-with-virtualbox 但我已经编写了脚本,所以它使用 VboxManage 命令自动挂载。不确定 ubuntu 帐户。在没有人回答后放弃了这个 BS,我自己设置了 4 个虚拟机。我正在使用 Ansible 完成其余的管理工作。
    【解决方案2】:

    我终于找到了一个可以创建可用帐户的有效配置;

    users:
      - default
      - name: kim
        passwd: "$6$kW4vfBM9kGgq4hr$TFtHW7.3jOECR9UCBuw9NrdSMJETzSVoNQGcVv2y.RqRUzWDEtYhYRkGvIpB6ml1fh/fZEVIgKbSXI9L1B6xF."
        shell: /bin/bash
        lock-passwd: false
        ssh_pwauth: True
        chpasswd: { expire: False }
        sudo: ALL=(ALL) NOPASSWD:ALL
        groups: users, admin
        ssh_authorized_keys:
         - ssh-rsa ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCbJ7oF5RXUj6R1ewF15X2i6RieWFmVUkOyT0DwzgfI8fRl5mMMSRlDRYQi3NznwcWDAxLApF82FomNv8vk1V2SXDGGs8XpOvtgAPpR3JUKJGmxoiES7rxa7bq/JSmpGprsnlCocTJnOfDz6Gz2Ge4+D84EZHOW7ejbkWDBdXOYYRMIlRSoXBkb0017G/OIvPNdwZRYLzLJYjGGL08GX+/Da+lrbz8/FaewXwb/BfjRYESOG+aJNTCOQfgzNsFGJ6EslsMc1bDtCq2pvWUenlUo/2BEAICiJxmXZkAjDrIYcyTzHLE14+UfCiC6pbMEdXF2ndUARr0HcNpvJz8K0Mg4CfjRpxaopfPfHp/lMR36ys0r4bT3q9iU4ClnUAeWxbCK7pUN+D/6TVrIKLOLuuIph81sb5+jW23ycg0fjQ/2/ttKQvTzHwomN6B6T/KgXVt367Iq+uzN02wtk282pJOIIqVi3PSHVcJl1I+bFAzeEdmJP29d/wnp0ZyuNYDp0P8= miesl@mies-pc
    
    autoinstall:
        version: 1
        identity:
            hostname: yamanouchi-node-1
            username: ubuntu
            password: "$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0"
        refresh-installer:
            update: yes
    

    它创建一个名为kim 和密码possible 的用户。我不完全确定是否需要刷新安装程序(我不这么认为)。使用密码 ssh 和没有密码 root 非常不安全,但是,嘿。你可以自己配置。

    ubuntu 帐户仍然无法使用。我不知道为什么。

    【讨论】:

    • 您的示例中额外的 ssh-rsa 字符串使 ssh 密钥身份验证无法正常工作。删除它,我可以使用密钥身份验证登录。
    • 谢谢!作为记录,如果放在autoinstall/user-data 下,这个users 部分也有效。
    • 20.04 中的用户数据或用户:对我来说根本不起作用,有什么想法吗?
    【解决方案3】:

    对于 ubuntu 20.04,我发现没有 /etc/securetty 就无法登录控制台。我回答这个问题是因为不清楚您是否尝试通过控制台访问您的帐户。

    runcmd:
        - cp /usr/share/doc/util-linux/examples/securetty /etc/securetty
    

    我发现如果我将 /etc/securetty 安装为 runcmd,然后我可以在系统控制台上使用这些 cloud-config 用户登录。否则,认证将失败。

    我对决定使用此示例的安全后果不作任何声明。

    【讨论】:

      【解决方案4】:

      如果您通过 cloud-init 添加任何用户,则根本不会创建默认的ubuntu 用户。您会注意到/home/ubuntu/ 目录不存在。

      要创建允许 SSH 身份验证的 cloud-init 并设置密码以便我可以使用 sudo,我已成功使用以下步骤:

      使用mkpasswd 创建密码哈希:

      $ mkpasswd -m sha-512
      Password:  <enter your password here>
      $6$nq4v1BtHB8bg$Oc2TouXN1KZu7F406ELRUATiwXwyhC4YhkeSRD2z/I.a8tTnOokDeXt3K4mY8tHgW6n0l/S8EU0O7wIzo.7iw1
      

      然后,我在我的 cloud-init 中使用这个部分:

      users:
        - name: brandon
          groups: [ sudo ]
          shell: /bin/bash
          lock_passwd: false
          passwd: "$6$nq4v1BtHB8bg$Oc2TouXN1KZu7F406ELRUATiwXwyhC4YhkeSRD2z/I.a8tTnOokDeXt3K4mY8tHgW6n0l/S8EU0O7wIzo.7iw1"
          ssh-authorized-keys:
          - ssh-ed25519 AAAAC3NzaC1lZDI1zzzBBBGGGg3BZFFzTexMPpOZJbSa6OlzycjkPhsh4Qg2tSWZyXZ my-key-name
      

      我更喜欢使用 groups: [ sudo ] 语法通过组授予对 sudo 的访问权限,这是个人偏好而不是使用 sudo 指令。

      【讨论】:

        猜你喜欢
        • 2020-08-09
        • 2014-06-18
        • 2021-10-11
        • 2022-01-16
        • 2021-01-26
        • 1970-01-01
        • 2023-02-01
        • 1970-01-01
        • 2021-05-24
        相关资源
        最近更新 更多