لینوکس ۳۰۵؛ شب ۱۲: اجرای QEMU از خط فرمان و ورود امن به guest
فهرست نوشته
یک اجرای مستقیم QEMU نشان میدهد ماشین از چه disk و شبکهای استفاده میکند. امشب cloud image را با user-data کوچک بوت و از پورت محلی وارد آن میشویم.
این جلسه بخشی از دورهٔ لینوکس ۳۰۵ در ۶۰ شب است.
جایگاه در دوره: هدفهای 351.3، 353.3 آزمون 305-300.
محیط: hv-a، BASE_IMAGE معتبر شب ۱۱، حساب دارای /dev/kvm و SSH key مستقل دوره. cloud-init در شب ۵۴ مفصلتر میآید.
ابتدا mkdir -p ~/lpic305/direct را اجرا کن. در ~/lpic305/direct فایل meta-data بساز:
instance-id: direct-lab01-v1
local-hostname: direct-lab01
user-data با public key واقعی همان فایل کلید دوره؛ placeholder زیر پیش از اجرا جایگزین شود:
#cloud-config
users:
- name: student
groups: [sudo]
shell: /bin/bash
sudo: ["ALL=(ALL) NOPASSWD:ALL"]
lock_passwd: true
ssh_authorized_keys:
- REPLACE_WITH_LAB_PUBLIC_SSH_KEY
ssh_pwauth: false
student داخل VM آزمایشگاهی sudo دارد؛ این مجوز به حساب host مربوط نیست. private key به seed منتقل نمیشود.
cd ~/lpic305/direct
qemu-img create -f qcow2 -F qcow2 -b "$BASE_IMAGE" direct-lab01.qcow2
qemu-img resize direct-lab01.qcow2 12G
cloud-localds seed.img user-data meta-data
qemu-system-x86_64 -name direct-lab01 -accel kvm -cpu host -smp 2 -m 2048 \
-drive file=direct-lab01.qcow2,format=qcow2,if=virtio \
-drive file=seed.img,format=raw,if=virtio,readonly=on \
-netdev user,id=n0,hostfwd=tcp:127.0.0.1:2222-:22 \
-device virtio-net-pci,netdev=n0 -nographic
BASE_IMAGE باید absolute باشد؛ فایل overlay جدید است. گزینههای disk را صریح تعریف کردهایم و SSH فقط روی loopback host منتشر میشود.
در ترمینال دوم:
ssh -p 2222 -i ~/lpic305/keys/id_ed25519 student@127.0.0.1
اثر انگشت host key را از console guest تطبیق بده؛ StrictHostKeyChecking را خاموش نکن. cloud-init و نصب اولیه ممکن است زمان بخواهند. توقف با poweroff داخل guest بر خروج ناگهانی فرایند ترجیح دارد.
آزمون و بازگشت: ورود key-only، hostname و عدم دسترسی بیرونی پورت 2222 را بسنج. بعد از shutdown فقط overlay/seed همین تمرین را حذف یا آرشیو کن؛ base دستنخورده باقی است.
منبع: QEMU invocation ، NoCloud .