如何为 Ubuntu Cloud Images 设置密码(即不使用 ssh)

如何为 Ubuntu Cloud Images 设置密码(即不使用 ssh)

我正在运行一个具有非常特殊网络配置的 OpenStack 云,这使得实例无法与外界的任何事物进行通信,直到我登录并设置几个配置文件之后。

因此,我不能使用 SSH 密钥登录实例。有没有办法在 Ubuntu 12.04(必须是 12.04)云映像上设置默认密码,以便我可以直接从 Horizo​​n 控制台登录?我​​尝试使用概述的程序https://ask.openstack.org/en/question/5531/defining-default-user-password-for-ubuntu-cloud-image/但它在 Ubuntu 12.04 上不起作用...但它在 14.04 上起作用。

答案1

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
...

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

  • 用户名:ubuntu
  • 密码:asdfqwer

这里我描述了一个完整、最小、详细的 QEMU 工作示例:网上有没有预建的 QEMU Ubuntu 映像(32 位)?

答案2

您可以首先从已有密钥对的 virtualbox 或 vmware 创建虚拟机(VM)映像。由于您可以自由控制 virtualbox 或 vmware,因此您可以从虚拟主机获取密钥对。

  1. 然后将密钥对导入到你的 openstack。

  2. 上传此虚拟机映像

  3. 从该图像创建一个实例(A)

  4. 使用云镜像创建一个实例(B),并注入密钥对(从步骤 1 上传)

  5. 打开实例 A 的控制台(在 Horizo​​n 中),现在您可以从 A 连接实例 B,因为 B 已注入来自 A 的公钥

  6. 登录后,您可以设置实例 B 的环境并更改配置

答案3

你的图片是:focal-server-cloudimg-amd64.img

rm -f vm_0001-focal-server-cloudimg-amd64.qcow2
qemu-img create -f qcow2 -F qcow2 -b focal-server-cloudimg-amd64.img  vm_0001-focal-server-cloudimg-amd64.qcow2 20G
qemu-img info vm_0001-focal-server-cloudimg-amd64.qcow2
VM_NAME="ubuntu-20-cloud-image"
USERNAME="programster"
PASSWORD="thisok"
echo "#cloud-config
system_info:
  default_user:
    name: $USERNAME
    home: /home/$USERNAME

password: $PASSWORD
chpasswd: { expire: False }
hostname: $VM_NAME

# configure sshd to allow users logging in using password 
# rather than just keys
ssh_pwauth: True
" | sudo tee user-data
cloud-localds ./cidata.iso user-data
qemu-system-x86_64 -m 2048 -smp 4 -hda ./vm_0001-focal-server-cloudimg-amd64.qcow2 \
      -cdrom ./cidata.iso -device e1000,netdev=net0 -netdev user,id=net0,hostfwd=tcp::5555-:22 -nographic

相关内容