Ubuntu云服务器映像的登录凭据

Ubuntu云服务器映像的登录凭据,ubuntu,cloud,virtual-machine,openstack,Ubuntu,Cloud,Virtual Machine,Openstack,我正在尝试使用虚拟机构建云基础设施 在Openstack手册中,提到了中的映像包含预安装的Openstack 我下载了trusty-server-cloudimg-amd64-disk1.img文件,并使用KVM加载了它。我使用此映像实例化了一个虚拟机,但我无法登录(使用控制台)或ssh 我不知道该操作系统的默认用户名和密码 另外(一个不同的问题),我想使用这两个虚拟机构建一个云,是否可以使用相同的映像?ubuntu映像的默认用户名是ubuntu 没有默认密码,您不能使用用户名/密码通过ssh连

我正在尝试使用虚拟机构建云基础设施

在Openstack手册中,提到了中的映像包含预安装的Openstack

我下载了
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)机器上使用Ubuntu
cloudimg

随后,您将从窗口中启动图像,如下所示,以确保即使您注销,图像仍能继续运行:

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