The following code could be used to make the Ubuntu cloudimg
usable on a Debian 7.2 (wheezy) machine:
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
Subsequently, you'd start the image like this, from within a tmux
window to make sure it'll keep running even if you logout:
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
You can then login into the machine as user ubuntu
and the password as generated within the user-data
file. The login can be either through the serial console printed by kvm
(which would normally be pretty slow, even if you have an ssh connection on top of it), or through ssh
with ssh ubuntu@localhost -p1810
. The user ubuntu
gets passwordless sudo
access as root by default.
P.S. I've also tried playing with adding the ssh-authorized-keys
, but cloud-config
format seems very fragile, and at top level it's just ignored, whereas at a users:
level as below, the whole ubuntu
user seems to break (at least the password part of it). Here's the code to get the keys into a format that's potentially legible for 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 that the password
, apparently, may not be a valid field for the users
specification, as it has a passwd
hash instead, so, the whole thing breaks the prior code, because now the user ubuntu gets created without a password.)