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

Edd*_*onk 6 virtualization linux ubuntu virtualbox vmware-vsphere

我正在尝试使用 VirtualBox 从 .ova 开始,并希望稍后在 vSphere 中导入相同的映像。

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

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

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

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

我试过:

cot edit-properties ubuntu-18.04-server-cloudimg-amd64-custom.ova -p password=ubuntu
Run Code Online (Sandbox Code Playgroud)

也试过:

cot edit-properties ubuntu-18.04-server-cloudimg-amd64-custom.ova -p user-data="password: ubuntu"
Run Code Online (Sandbox Code Playgroud)

两次尝试都没有成功。(无法登入)

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

有任何想法吗?

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

  1. 作为第一步,我想要 root 访问权限,因此我可以测试适配器、网桥、路由、DNS 的网络设置。
  2. 具有 ssh 密钥和 sudo 的新用户是第二个目标。
  3. Ubuntu 17.10(即将发布 18.04)
  4. 虚拟盒 5.2.14
  5. vSphere 5.5

Leo*_*Leo 7

问题

如果您可以在问题中添加背景信息,这将很有用,例如:

  1. 为什么需要设置root密码。也许有另一种方法。你想达到什么目的?
  2. 根据 (1),推荐的方式可能是以下几个选项之一:具有密码的 root 用户,具有 ssh 密钥和 sudo 的新用户,其他。)
  3. 你的主机操作系统是什么?
  4. 虚拟机版本?
  5. VMWare vSphere 版本?

总体规划

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

虚拟盒子

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

云初始化

如果你使用的是Ubuntu Cloud Images,你应该使用Cloud-Init来设置初始配置,它允许你设置:

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

...除其他功能外。

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

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

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

这是一个示例用户数据云配置文件,使用您的文本编辑器创建它,并尊重名称或种子文件将不是有效的种子并且无法工作。

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

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

instance-id: set-an-unique-instance-name-id
local-hostname: set-the-hostname
Run Code Online (Sandbox Code Playgroud)

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

genisoimage -output nocloud.iso -volid cidata -joliet -rock user-data meta-data
Run Code Online (Sandbox Code Playgroud)

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

cloud-localds my-seed.img my-user-data my-meta-data
Run Code Online (Sandbox Code Playgroud)

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

开机

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


Cir*_*郝海东 6

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
...
Run Code Online (Sandbox Code Playgroud)

现在您可以登录:

  • 用户名: ubuntu
  • 密码: asdfqwer

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


bat*_*a09 5

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

创建一个名为userdata.txt的文件,内容如下:

#cloud-config
password: mypasswd
chpasswd: { expire: False }
ssh_pwauth: True
Run Code Online (Sandbox Code Playgroud)

现在,在创建新实例时将userdata.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
Run Code Online (Sandbox Code Playgroud)

上面的命令将为默认用户ubuntu设置密码mypasswd