我正在尝试使用 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"
两次尝试均未成功。(无法登录)
是否有一个步骤可以将此配置应用到图像中,或者这些属性在启动时传递给图像?
有任何想法吗?
更新:(背景问题的答案)
- 第一步,我需要获得 root 访问权限,这样我就可以测试适配器、网桥、路由、DNS 的网络设置。
- 拥有 ssh 密钥和 sudo 的新用户是第二个目标。
- Ubuntu 17.10(即将推出 18.04)
- VirtualBox 5.2.14
- vSphere 5.5
答案1
问题
如果您能为该问题添加背景信息将会很有用,例如:
- 为什么需要设置 root 密码。也许还有其他方法。你想完成什么?
- 根据(1),推荐的方式可能是以下几种选项之一:使用密码的 root 用户、使用 ssh 密钥和 sudo 的新用户,等等。)
- 您的主机操作系统是什么?
- VirtualBox 版本?
- VMWare vsphere 版本?
总体规划
- 为 Virtualbox 设置正确的设置
- 创建用户数据和元数据文件
- 为 cloud-init 生成 ISO 映像
- 使用附加的 ISO 映像作为可移动设备启动虚拟机
虚拟盒
- 您可以将 OVA 作为设备导入,使用 IMG 或 VMDK 磁盘。您可以在 GUI 或命令行中执行此操作。
- 您应该启用串行端口在虚拟机的硬件设置中。可选,将其指向原始文件在您的家里,这样当出现问题时您就可以查看日志。
- 您需要下面为 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: