如何在 Ubuntu 云镜像上设置密码?

如何在 Ubuntu 云镜像上设置密码?

我正在尝试使用 VirtualBox 启动 .ova,并想稍后在 vSphere 中导入相同的映像。

Ubuntu 云镜像不再有标准密码。

我想编辑 .ova 来配置密码。(以及后来的 SSH 密钥)

下载的.ova 确实具有密码属性。

我找到了一个名为(Common OVF tool)的工具cot来编辑属性。

我试过:

cot edit-properties ubuntu-18.04-server-cloudimg-amd64-custom.ova -p password=ubuntu

也尝试过:

cot edit-properties ubuntu-18.04-server-cloudimg-amd64-custom.ova -p user-data="password: ubuntu"

两次尝试均未成功。(无法登录)

是否有一个步骤可以将此配置应用到图像中,或者这些属性在启动时传递给图像?

有任何想法吗?

更新:(背景问题的答案)

  1. 第一步,我需要获得 root 访问权限,这样我就可以测试适配器、网桥、路由、DNS 的网络设置。
  2. 拥有 ssh 密钥和 sudo 的新用户是第二个目标。
  3. Ubuntu 17.10(即将推出 18.04)
  4. VirtualBox 5.2.14
  5. vSphere 5.5

答案1

问题

如果您能为该问题添加背景信息将会很有用,例如:

  1. 为什么需要设置 root 密码。也许还有其他方法。你想完成什么?
  2. 根据(1),推荐的方式可能是以下几种选项之一:使用密码的 root 用户、使用 ssh 密钥和 sudo 的新用户,等等。)
  3. 您的主机操作系统是什么?
  4. VirtualBox 版本?
  5. VMWare vsphere 版本?

总体规划

  1. 为 Virtualbox 设置正确的设置
  2. 创建用户数据和元数据文件
  3. 为 cloud-init 生成 ISO 映像
  4. 使用附加的 ISO 映像作为可移动设备启动虚拟机

虚拟盒

  1. 您可以将 OVA 作为设备导入,使用 IMG 或 VMDK 磁盘。您可以在 GUI 或命令行中执行此操作。
  2. 您应该启用串行端口在虚拟机的硬件设置中。可选,将其指向原始文件在您的家里,这样当出现问题时您就可以查看日志。
  3. 您需要下面为 cloud-init 生成的 iso/img,并将其安装到您导入的 VM 的 dvd 或 cd 设备中。如果 VM 不包含 dvd/cd 设备,则必须添加一个。将其添加为 IDE 和主设备,然后加载下面生成的 ISO。

云初始化

如果您使用Ubuntu 云镜像,你应该使用云初始化用于设置初始配置,它允许您设置:

  • 默认语言环境
  • 主机名
  • 生成并设置 SSH 私钥

... 以及其他功能。

可以通过内联命令的用户数据标志或调用要应用的设置的 YAML 类型配置文件来配置 Cloud-init 的行为。

这可以在您以内联方式运行时通过--user-data--user-data-file参数完成,或者您可以使用 ISO 完成。我将展示 ISO 安装模式的步骤。

我不会为 root 或用户设置密码,而是创建一个通过 ssh 公钥具有 SSH 访问权限的新用户,并允许用户 sudo 权限。

以下是一个示例用户数据cloud-config 文件,用文本编辑器创建它,并尊重名称,否则种子文件将不是有效的种子并且无法工作。

#cloud-config
users:
  - default
  - name: eddypronk
    ssh-authorized-keys:
      - <your user public key here>
    sudo: ALL=(ALL) NOPASSWD:ALL
    groups: sudo
    shell: /bin/bash

您还可以拥有主机名和其他定义的元数据:

instance-id: set-an-unique-instance-name-id
local-hostname: set-the-hostname

创建文件后,从虚拟管理器生成一个 iso 文件作为 cdrom 或 dvd 加载:

genisoimage -output nocloud.iso -volid cidata -joliet -rock user-data meta-data

您需要genisoimage此选项或其他选项的cloud-utils工具:cloud-localds

cloud-localds my-seed.img my-user-data my-meta-data

请记住,如果您让种子/nocloud iso 保持挂载状态,它将使用数据文件中的设置覆盖虚拟机中的设置。如果您更改了用户数据或元数据中的任何内容,则需要重建 iso 或 img。

引导

现在您可以启动虚拟机了。默认情况下,您无法使用用户名和密码通过 ssh 连接到计算机,也无法通过 VNC 控制台(Virtualbox 中的“图形”虚拟机窗口)进行连接。您必须使用公钥/私钥身份验证方法进行 ssh。这意味着在用户数据YAML 文件。此外,ubuntu 帐户的 sudo 权限提升无需密码,但帐户默认被锁定。

答案2

18.04 设置步骤

简而言之,你需要:

sudo apt-get install cloud-image-utils

cat >user-data <<EOF
#cloud-config
password: asdfqwer
chpasswd: { expire: False }
ssh_pwauth: True
EOF

cloud-localds user-data.img user-data

# user-data.img MUST come after the rootfs. 
qemu-system-x86_64 \
-drive file=ubuntu-18.04-server-cloudimg-amd64.img,format=qcow2 \
-drive file=user-data.img,format=raw
...

现在您可以使用以下方式登录:

  • 用户名:ubuntu
  • 密码:asdfqwer

这里我描述了一个完整、最小、详细的 QEMU 工作示例:https://askubuntu.com/questions/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171#1081171

答案3

以下是可能的解决方案的链接https://techglimpse.com/nova-boot-instance-with-password/

创建一个名为用户数据.txt内容如下:

#cloud-config
password: mypasswd
chpasswd: { expire: False }
ssh_pwauth: True

现在,通过用户数据.txt文件作为输入,同时创建一个新的实例,如下所示:

#openstack server create --flavor m1.small --image Ubuntu-Trusty --key-name  mykey --nic net-id=88536e89-12a9-41eb-8aed-57983ee299e8 --security-group default --user-data=userdata.txt my-ubuntu

上述命令将设置密码我的密码对于默认用户Ubuntu

答案4

根据他们的网站,图像的密码是随机生成的。

用户名将是 ubuntu,但图像将在第一次启动时“吐出”随机生成的密码。

“获取‘ubuntu’的密码并登录 grub 菜单中的默认选择将在首次启动时为‘ubuntu’用户随机生成一个密码。密码写在两个地方,控制台和串行设备。在控制台上,您将看到如下行:”

阅读此链接,步骤 4:

https://help.ubuntu.com/community/UEC/Images

相关内容