How to import Cloud Image to Virtual Machines on Debian 10

Download the latest Debian 10 cloud image in qcow2 format

$ curl -L -O
$ du -sh *.qcow2
223M    debian-10-genericcloud-amd64.qcow2

Reset root password on cloud image

Your system might not have install virt-customize

To install virt-customize:

$ sudo apt update
$ sudo apt install libguestfs-tools
$ which virt-customize

To reset root password, set hostname and apply new host SSH-key with virt-customize:

$ virt-customize --add "PathToTagetDisk" \
--root-password password:MyRootPW \
--hostname "VMName" \ 
--firstboot-command 'ssh-keygen -A && systemctl restart sshd'

and if you want to allow SSH login with password for root (WARNING, only for test-servers!)

$ virt-customize --add "PathToTagetDisk" \
--root-password password:MyRootPW \
--append-line "/etc/ssh/sshd_config.d/rootlogin.conf":"PermitRootLogin yes" \
--append-line "/etc/ssh/sshd_config.d/rootlogin.conf":"PasswordAuthentication yes" \
--hostname "VMName" \ 
--firstboot-command 'ssh-keygen -A && systemctl restart sshd'

Copy cloud image to images directory for libvirt

$ sudo cp debian-10-genericcloud-amd64.qcow2 /var/lib/libvirt/images/d10c.qcow2

Create VM with import option

$ virt-install --import \
--connect qemu:///system \
--autostart \
--name d10c \
--os-variant debian10 \
--memory 2048 \
--vcpus 2 \
--disk /var/lib/libvirt/images/d10c.qcow2,bus=virtio \
--network default

Login to VM

Make sure the VM is up-n-running

$ virsh dominfo d10c
Id:             76
Name:           d10c
UUID:           5dbcd917-5984-42c2-86c5-75882a1d1216
OS Type:        hvm
State:          running
CPU(s):         2
CPU time:       12.3s
Max memory:     2097152 KiB
Used memory:    2097152 KiB
Persistent:     yes
Autostart:      enable
Managed save:   no
Security model: apparmor
Security DOI:   0
Security label: libvirt-5dbcd917-5984-42c2-86c5-75882a1d1216 (enforcing)

Get the IP from the VM

$ virsh domifaddr d10c
Name       MAC address          Protocol     Address
 vnet11     52:54:00:36:28:f6    ipv4

Edit /etc/hosts to add d10c

$ sudo vi /etc/hosts
...  d10c   # Debian 10 Cloud Image

Now, you can login with the password you've reset earlier

$ ssh d10c
Connection closed by port 22

Open the VM and reinstall openssh-server

Open the VM with virt-viewer or vnc-console

$ virt-viewer d10c

Screen for virt-viewer

Screen for vnc-console

Login as root to reinstall openssh-server

# apt update
# apt install --reinstall openssh-server

Now you'll need to add user account to login with

Make sure to add the user to sudo group

# adduser tchung
# adduser tchung sudo

Make sure to enable PasswordAuthentication in sshd_config

# vi /etc/ssh/sshd_config
PasswordAuthentication yes
# systemctl reload sshd


Now, you should be able to login the VM which was created from Cloud Image

$ ssh d10c
tchung@d10c's password: 
Linux debian 4.19.0-17-cloud-amd64 #1 SMP Debian 4.19.194-1 (2021-06-10) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

CategorySystemAdministration | CategoryVirtualization | CategorySoftware