Ubuntu云服务器映像的登录凭据
我正在尝试使用虚拟机构建云基础设施 在Openstack手册中,提到了中的映像包含预安装的Openstack 我下载了Ubuntu云服务器映像的登录凭据,ubuntu,cloud,virtual-machine,openstack,Ubuntu,Cloud,Virtual Machine,Openstack,我正在尝试使用虚拟机构建云基础设施 在Openstack手册中,提到了中的映像包含预安装的Openstack 我下载了trusty-server-cloudimg-amd64-disk1.img文件,并使用KVM加载了它。我使用此映像实例化了一个虚拟机,但我无法登录(使用控制台)或ssh 我不知道该操作系统的默认用户名和密码 另外(一个不同的问题),我想使用这两个虚拟机构建一个云,是否可以使用相同的映像?ubuntu映像的默认用户名是ubuntu 没有默认密码,您不能使用用户名/密码通过ssh连
trusty-server-cloudimg-amd64-disk1.img
文件,并使用KVM加载了它。我使用此映像实例化了一个虚拟机,但我无法登录(使用控制台)或ssh
我不知道该操作系统的默认用户名和密码
另外(一个不同的问题),我想使用这两个虚拟机构建一个云,是否可以使用相同的映像?ubuntu映像的默认用户名是
ubuntu
没有默认密码,您不能使用用户名/密码通过ssh连接到机器,也不能通过VNC控制台进行连接。您必须使用ssh的公钥/私钥身份验证方法。另外,
ubuntu
帐户的sudo提升也是无密码的
首次访问虚拟机后,您可以更改这些设置并启用ssh的用户名/密码身份验证
关于第二个问题,是的,您可以对多个虚拟机使用同一个映像。以下是关于如何首次登录新的Ubuntu实例的一些详细信息,以补充@Athafoud的答案 在OpenStack GUI中,您可以在Project>Compute>Access&Security下管理公钥/私钥。创建SSH密钥(例如,在Linux或macOS下使用
SSH-keygen
),并通过单击“导入密钥对”将其添加到OpenStack密钥中。(或者您可以从OpenStack GUI中“创建密钥对”,然后将密钥导出到工作站。)
创建新实例(VM)时,必须将此密钥指定为第一次登录时使用的“密钥对”
新实例启动并运行后,通过SSH连接到它,如下所示:
ssh-i ubuntu@
其中,
是与实例关联的SSH密钥的名称,
是实例的主机名或IP地址。此命令将您登录实例上的ubuntu
帐户,而不需要密码
ubuntu
用户拥有sudo
权限,因此您可以在登录后键入sudo-i
成为root用户,并根据您的意愿管理虚拟机:-) 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
...
sudo-apt-get-install-cloud-image-utils
cat>用户数据以下代码可用于在Debian 7.2(wheezy)机器上使用Ubuntucloudimg
:
随后,您将从窗口中启动图像,如下所示,以确保即使您注销,图像仍能继续运行:
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
登录到机器,并使用用户数据
文件中生成的密码。登录可以通过kvm
打印的串行控制台(这通常会非常慢,即使上面有ssh连接),也可以通过ssh
和ssh进行ubuntu@localhost-p1810
。默认情况下,用户ubuntu
以root用户身份获得无密码sudo
访问权限
另外,我也尝试过添加ssh授权密钥
,但是cloud-config
格式似乎非常脆弱,在顶层它只是被忽略了,而在用户:
级别下,整个ubuntu
用户似乎都崩溃了(至少是密码部分)。下面是将密钥转换为云配置可能易读的格式的代码:
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是在没有密码的情况下创建的。)如何:
$ virt-customize -a bionic-server-cloudimg-amd64.img --root-password password:coolpass
对我来说,安装映像,然后在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
在我的例子中,virt定制失败,这里我使用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
如何使用公钥/私钥身份验证方法?如果我使用ssh拷贝id-p2222ubuntu@localhost其中2222是我获得的重定向ssh端口:权限被拒绝(公钥)。@hlitz您必须在创建VM时上载您的公钥。如果您正在使用UI,则是系统提示您输入公钥的步骤。如果您正在使用控制台和API创建虚拟机,那么有一个命令(我现在记不起来)可以使用并传递您的密钥。我尝试了xenial-server-cloudimg-arm64-uefi1.img from:login“ubuntu”不起作用,它会请求密码,我尝试了空-它说“login-error”。@Athafoud,我想我没有使用SSH。我刚刚在QEmu中启动了虚拟机,并在它开始的地方使用了终端。@SergeRogatch是的,我认为那样会更好。
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