我正在尝试使用虚拟机构建云基础设施。
在Openstack手册中提到,此链接中的映像包含预安装的Openstack。
我下载了trusty-server-cloudimg-amd64-disk1.img
文件,并使用KVM加载它。我使用此镜像实例化了一台虚拟机,但我无法登录(使用控制台)或通过ssh连接。
我不知道该操作系统的默认用户名和密码。
另外(一个不同的问题),我想使用这两个虚拟机构建云,可以使用相同的映像吗?
我正在尝试使用虚拟机构建云基础设施。
在Openstack手册中提到,此链接中的映像包含预安装的Openstack。
我下载了trusty-server-cloudimg-amd64-disk1.img
文件,并使用KVM加载它。我使用此镜像实例化了一台虚拟机,但我无法登录(使用控制台)或通过ssh连接。
我不知道该操作系统的默认用户名和密码。
另外(一个不同的问题),我想使用这两个虚拟机构建云,可以使用相同的映像吗?
使用cloud-localds
逐步设置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 \
-m 1G
...
现在您可以使用以下信息登录:
ubuntu
asdfqwer
这里我描述了一个完整的、最小详细工作的 QEMU 示例:https://askubuntu.com/questions/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171#1081171
在 Ubuntu 18.04 主机上进行测试。
这个怎么样?
$ virt-customize -a bionic-server-cloudimg-amd64.img --root-password password:coolpass
ubuntu
。ubuntu
账户的sudo权限提升不需要密码。modprobe nbd max_part=8 && qemu-nbd -c /dev/nbd0 image.raw && mkdir a && mount /dev/nbd0p1 a
chroot a sh -c "echo 'root:password' | chpasswd"
umount ./a && rmdir a && qemu-nbd -d /dev/nbd0
在我的情况下,virt-customize 失败了,我使用 virt-sysprep 设置了密码。
cp ubuntu-21.04-server-cloudimg-amd64.img wen3.img
chown qemu:qemu wen3.img
virt-sysprep --root-password password:1 --uninstall cloud-init --selinux-relabel -a wen3.img --network --hostname=wen3
virt-install \
--import \
--name wen3 \
--ram=16384 \
--vcpus=16 \
--accelerate \
--network network:default,model=virtio \
--mac 02:ca:fe:fa:ce:33 \
--debug \
--wait 0 \
--console pty \
--disk path=/var/lib/libvirt/images/wen3.img,bus=virtio,size=100 \
--os-variant centos7.0
cloudimg
在Debian 7.2(wheezy)机器上可用:apt-get install pwgen
apt-get install genisoimage
git clone -b master https://git.launchpad.net/cloud-utils
printf "#cloud-config\n" > user-data
printf "password: `pwgen 8 1`\nchpasswd: { expire: False }\nssh_pwauth: True\n" >> user-data
./cloud-utils/bin/cloud-localds user-data.img user-data
tmux
窗口中启动该镜像,以确保即使您注销,它也会继续运行:
kvm -m 2048 -smp 2 -hda ubuntu-18.10-server-cloudimg-amd64.img -hdb user-data.img -net nic -net user,hostfwd=tcp::1810-:22 -nographic
然后,您可以使用在user-data
文件中生成的密码作为用户ubuntu
登录到机器。登录可以通过kvm
打印的串行控制台(即使您在其上面有一个ssh连接,它通常也会非常慢)或通过ssh
与ssh ubuntu@localhost -p1810
进行。默认情况下,用户ubuntu
具有无需密码的以root身份访问sudo
的权限。
P.S. 我也尝试过添加 ssh-authorized-keys
,但是 cloud-config
格式似乎非常脆弱,在顶层被忽略,而在以下的 users:
级别下,整个 ubuntu
用户似乎会出问题(至少它的密码部分)。以下是将密钥转换为可能可读取 cloud-config 的格式的代码:
printf "users:\n - name: ubuntu\n ssh-authorized-keys:\n" >> user-data
cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys | sed 's/^/ - /g' >> user-data
密码
可能不是用户
规范的有效字段,因为它具有passwd
哈希值,因此整个代码块会崩溃,因为现在用户ubuntu将被创建而没有密码。)以下是有关如何首次登录新的Ubuntu实例的详细信息,以补充@Athafoud的答案。
在OpenStack GUI中,您可以在“项目”>“计算”>“访问和安全性”下管理您的公共/私有密钥。创建一个SSH密钥(例如,在Linux或macOS下使用ssh-keygen
),然后通过单击“导入密钥对”将其添加到OpenStack密钥中。(或者您可以从OpenStack GUI内部“创建密钥对”,然后将密钥导出到您的工作站。)
当您创建新实例(VM)时,您必须指定此密钥作为您首次登录时要使用的“密钥对”。
一旦您的新实例已启动并运行,可以通过以下方式通过SSH连接到它:
ssh -i <keyfile> ubuntu@<instance>
其中<keyfile>
是您与实例关联的SSH密钥的名称,而<instance>
是实例的主机名或IP地址。此命令会在不要求密码的情况下将您登录到实例上的ubuntu
帐户。
Ubuntu
用户拥有sudo
权限,因此您可以在登录后键入sudo -i
来成为root,并随心所欲地管理虚拟机 :-).
-hda
和-hdb
选项:qemu-system-x86_64 -hda ubuntu-18.04-server-cloudimg-amd64.img -hdb user-data.img -m 1G -enable-kvm
。 我注意到密码保存在Ubuntu磁盘中,因此我们无法在启动后更改“user-data”中的“password”。 - wataash