I am trying to build a cloud infrastructure using VM's
In the Openstack manuals, it is mentioned that the images in this link contain, Openstack pre-installed.
I downloaded the trusty-server-cloudimg-amd64-disk1.img
file and I loaded it using KVM. I instantiated a Virtual Machine using this image but I am not able to login (using the console) or ssh into it.
I do not know the default username and password of that OS.
Also (a different question), I would like to build a Cloud using the 2 Virtual Machines, is it possible to use the same image?
The default username for ubuntu image is ubuntu
.
There is not a default password, and you can not ssh to the machine using username / password or connect through the VNC console. You have to use public / private key authentication method with ssh. Also sudo elevation for ubuntu
account is passwordless.
After accessing for the first time your virtual machine, you can change those settings and enable username / password authentication for ssh.
Regarding your second question,
Yes, you can use the same image for multiple virtual machine.
18.04 setup step-by-step
In short you need on the host:
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 \
-m 1G
...
and now you can login with:
- username:
ubuntu
- password:
asdfqwer
Here I describe a full minimal detailed working QEMU example: https://askubuntu.com/questions/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171#1081171
Tested on an Ubuntu 18.04 host.
Here are some details on how to log into a new Ubuntu instance for the first time, to complement @Athafoud's answer.
In the OpenStack GUI, you manage your public/private keys under Project > Compute > Access & Security. Create an SSH key (e.g. by using ssh-keygen
under Linux or macOS) and add it to the OpenStack keys by clicking on "Import Key Pair". (Or you can "Create a Key Pair" from within the OpenStack GUI and then export the keys to your workstation.)
When you create the new instance (VM), you have to specify this key as the "keypair" you will use to log in for the first time.
Once your new instance is up and running, connect to it via SSH as follows:
ssh -i <keyfile> ubuntu@<instance>
where <keyfile>
is the name of the SSH key you associated with the instance, and <instance>
is the hostname or IP address of the instance. This command logs you into the ubuntu
account on the instance without asking for a password.
The ubuntu
user has sudo
privileges, so you can become root by typing sudo -i
after login, and manage the VM as you please :-).
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.)