我正在尝试使用虚拟机构建云基础架构在Openstack手册中,提到this link中的映像包含预安装的Openstack。我下载了trusty-server-cloudimg-amd64-disk1.img文件,并使用KVM加载了它。我使用此映像示例化了一个虚拟机,但我无法登录(使用控制台)或使用ssh登录到它。我不知道该操作系统的默认用户名和密码。另外(另一个问题),我想使用2个虚拟机构建云,是否可以使用相同的映像?
trusty-server-cloudimg-amd64-disk1.img
pjngdqdw1#
安装映像,然后在chroot中使用chpasswd,这对我来说是最简单的解决方案:
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
xdnvmnnf2#
下面的代码可以用来使Ubuntu cloudimg在Debian 7.2(wheezy)机器上可用:
cloudimg
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然后,您可以使用ubuntu用户身份和在user-data文件中生成的密码登录到计算机。(这通常会相当慢,即使您在其上有ssh连接),或者通过ssh与ssh ubuntu@localhost -p1810进行访问。默认情况下,用户ubuntu以root身份获得无密码sudo访问权限。附言:我也尝试过添加ssh-authorized-keys,但是cloud-config看起来非常脆弱,在顶级级别它只是被忽略了,而在下面的users:级别,整个ubuntu用户似乎都被破解了(至少密码部分)。下面的代码可以将密钥转换成一种对cloud-config来说可能是可读的格式:
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
ubuntu
user-data
ssh
ssh ubuntu@localhost -p1810
sudo
ssh-authorized-keys
cloud-config
users:
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
(Note显然,password可能不是users规范的有效字段,因为它有一个passwd散列,所以,整个过程破坏了先前的代码,因为现在用户ubuntu在没有密码的情况下被创建。)
password
users
passwd
dw1jzc5e3#
virt-customize在我的例子中失败了,在这里我使用virt-sysprep设置密码ok。
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
pbgvytdp4#
下面是一些关于如何第一次登录到一个新的Ubuntu示例的细节,以补充@Athafoud的答案。在OpenStack GUI中,您可以在Project〉Compute〉Access & Security下管理您的公钥/私钥。创建一个SSH密钥(例如,在Linux或macOS下使用ssh-keygen),并通过点击“Import Key Pair”将其添加到OpenStack密钥中。(或者,您可以在OpenStack GUI中“Create a Key Pair”,然后将密钥导出到您的工作站。创建新示例(VM)时,必须将此密钥指定为将用于首次登录的“密钥对”。新示例启动并运行后,通过SSH连接到该示例,如下所示:ssh -i <keyfile> ubuntu@<instance>个其中,<keyfile>是与示例关联的SSH密钥的名称,<instance>是示例的主机名或IP地址。此命令可使您登录到示例上的ubuntu帐户,而不要求输入口令。ubuntu用户具有sudo权限,因此您可以通过在登录后键入sudo -i成为root用户,并根据需要管理VM:-)。
ssh-keygen
ssh -i <keyfile> ubuntu@<instance>
<keyfile>
<instance>
sudo -i
blmhpbnm5#
18.04使用cloud-localds逐步进行设置
cloud-localds
总之,您需要在主机上:
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 ...
现在您可以使用以下方式登录:
asdfqwer
这里我描述一个完整的最小化的详细工作QEMU例子:https://askubuntu.com/questions/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171#1081171在Ubuntu 18.04主机上测试。
ssm49v7z6#
不如这样吧:
$ virt-customize -a bionic-server-cloudimg-amd64.img --root-password password:coolpass
cwdobuhd7#
ubuntu图像的默认用户名是ubuntu。没有默认密码,您不能使用用户名/密码ssh到计算机,也不能通过VNC控制台连接。您必须使用公钥/私钥身份验证方法进行ssh。ubuntu帐户的sudo elevation也是无密码的。首次访问虚拟机后,您可以更改这些设置并启用ssh的用户名/密码身份验证。关于你的第二个问题,是的,您可以将同一映像用于多个虚拟机。
7条答案
按热度按时间pjngdqdw1#
安装映像,然后在chroot中使用chpasswd,这对我来说是最简单的解决方案:
xdnvmnnf2#
下面的代码可以用来使Ubuntu
cloudimg
在Debian 7.2(wheezy)机器上可用:随后,您将像这样从
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
然后,您可以使用
ubuntu
用户身份和在user-data
文件中生成的密码登录到计算机。(这通常会相当慢,即使您在其上有ssh连接),或者通过ssh
与ssh ubuntu@localhost -p1810
进行访问。默认情况下,用户ubuntu
以root身份获得无密码sudo
访问权限。附言:我也尝试过添加
ssh-authorized-keys
,但是cloud-config
看起来非常脆弱,在顶级级别它只是被忽略了,而在下面的users:
级别,整个ubuntu
用户似乎都被破解了(至少密码部分)。下面的代码可以将密钥转换成一种对cloud-config来说可能是可读的格式:(Note显然,
password
可能不是users
规范的有效字段,因为它有一个passwd
散列,所以,整个过程破坏了先前的代码,因为现在用户ubuntu在没有密码的情况下被创建。)dw1jzc5e3#
virt-customize在我的例子中失败了,在这里我使用virt-sysprep设置密码ok。
pbgvytdp4#
下面是一些关于如何第一次登录到一个新的Ubuntu示例的细节,以补充@Athafoud的答案。
在OpenStack GUI中,您可以在Project〉Compute〉Access & Security下管理您的公钥/私钥。创建一个SSH密钥(例如,在Linux或macOS下使用
ssh-keygen
),并通过点击“Import Key Pair”将其添加到OpenStack密钥中。(或者,您可以在OpenStack GUI中“Create a Key Pair”,然后将密钥导出到您的工作站。创建新示例(VM)时,必须将此密钥指定为将用于首次登录的“密钥对”。
新示例启动并运行后,通过SSH连接到该示例,如下所示:
ssh -i <keyfile> ubuntu@<instance>
个其中,
<keyfile>
是与示例关联的SSH密钥的名称,<instance>
是示例的主机名或IP地址。此命令可使您登录到示例上的ubuntu
帐户,而不要求输入口令。ubuntu
用户具有sudo
权限,因此您可以通过在登录后键入sudo -i
成为root用户,并根据需要管理VM:-)。blmhpbnm5#
18.04使用
cloud-localds
逐步进行设置总之,您需要在主机上:
现在您可以使用以下方式登录:
ubuntu
asdfqwer
这里我描述一个完整的最小化的详细工作QEMU例子:https://askubuntu.com/questions/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171#1081171
在Ubuntu 18.04主机上测试。
ssm49v7z6#
不如这样吧:
cwdobuhd7#
ubuntu图像的默认用户名是
ubuntu
。没有默认密码,您不能使用用户名/密码ssh到计算机,也不能通过VNC控制台连接。您必须使用公钥/私钥身份验证方法进行ssh。
ubuntu
帐户的sudo elevation也是无密码的。首次访问虚拟机后,您可以更改这些设置并启用ssh的用户名/密码身份验证。
关于你的第二个问题,
是的,您可以将同一映像用于多个虚拟机。