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

esbemjvw  于 2022-11-02  发布在  其他
关注(0)|答案(7)|浏览(172)

我正在尝试使用虚拟机构建云基础架构
在Openstack手册中,提到this link中的映像包含预安装的Openstack。
我下载了trusty-server-cloudimg-amd64-disk1.img文件,并使用KVM加载了它。我使用此映像示例化了一个虚拟机,但我无法登录(使用控制台)或使用ssh登录到它。
我不知道该操作系统的默认用户名和密码。
另外(另一个问题),我想使用2个虚拟机构建云,是否可以使用相同的映像?

pjngdqdw

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
xdnvmnnf

xdnvmnnf2#

下面的代码可以用来使Ubuntu 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
然后,您可以使用ubuntu用户身份和在user-data文件中生成的密码登录到计算机。(这通常会相当慢,即使您在其上有ssh连接),或者通过sshssh ubuntu@localhost -p1810进行访问。默认情况下,用户ubuntu以root身份获得无密码sudo访问权限。
附言:我也尝试过添加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

(Note显然,password可能不是users规范的有效字段,因为它有一个passwd散列,所以,整个过程破坏了先前的代码,因为现在用户ubuntu在没有密码的情况下被创建。)

dw1jzc5e

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
pbgvytdp

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:-)。

blmhpbnm

blmhpbnm5#

18.04使用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
...

现在您可以使用以下方式登录:

  • 用户名:ubuntu
  • 密码:asdfqwer

这里我描述一个完整的最小化的详细工作QEMU例子:https://askubuntu.com/questions/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171#1081171
在Ubuntu 18.04主机上测试。

ssm49v7z

ssm49v7z6#

不如这样吧:

$ virt-customize -a bionic-server-cloudimg-amd64.img --root-password password:coolpass
cwdobuhd

cwdobuhd7#

ubuntu图像的默认用户名是ubuntu
没有默认密码,您不能使用用户名/密码ssh到计算机,也不能通过VNC控制台连接。您必须使用公钥/私钥身份验证方法进行ssh。ubuntu帐户的sudo elevation也是无密码的。
首次访问虚拟机后,您可以更改这些设置并启用ssh的用户名/密码身份验证。
关于你的第二个问题,
是的,您可以将同一映像用于多个虚拟机。

相关问题