如何為 Ubuntu 雲端映像設定密碼(即不使用 ssh)

如何為 Ubuntu 雲端映像設定密碼(即不使用 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

相關內容