This turned out to be much harder than I had hoped. Creating and connecting to a Windows Server VM is trivial in Azure but I thought I would try creating an Ubuntu VM with a desktop in AWS for the exercise (and hopefully in less time than it would take to download an Ubuntu ISO and set up a local VM - I failed). The main time sink was messing around with the SSH keys, which is admittedly a good thing because it’s got to be, excuse me, pretty damn secure. The other delay was in properly configuring X-Windows to show the Ubuntu desktop. Again this is probably a good thing because an OOTB Ubuntu instance is quite lean and most server-y things can be done via SSH rather in a GUI. That’s not what I was intending for this exercise though.
I won’t go into creating an AWS account but wow, that UI. I thought Azure was arcane.
To create a VM you find a section called ‘Create instance’, which lets you press a button called ‘Launch Instance’, which launches a virtual server, which is known as an Amazon EC2 instance. In Azure this is a big blue plus sign.
Now select your VM image. I picked “Ubuntu Server 14.04 LTS (HVM), SSD Volume Type”. It’s free! For eligible! I selected the ‘t2.micro’ instance type, which is also free. This is exactly how much I want to spend. I left everything else as default and clicked ‘Review and Launch’, mainly because I didn’t realise there were other things to configure.
By default a new security group will be created when launching a new instance, named something like
launch-wizard-1. This is ‘open to the world’, meaning that any IP address could connect to the instance if it has the proper credentials. A security group is basically a set of firewall rules. The only port open by default is 22 for SSH, which requires a private key. Because I’m using SSH tunnelling to forward the VNC port I don’t actually have to change the security group but you could limit port 22 to your static IP if you’ve got one.
Now hit Launch. The next step lets you create a public & private key pair. Select ‘Create a new key pair’ and give it a nice name. Press Download Key Pair to download the private key then continue. If you hit ‘View instances’ you can see the new VM get provisioned. It’s not that exciting.
I followed these instructions to use PuTTY to SSH into the VM but you could just use
ssh directly. I ended up needing to use SSH directly later on to create an SSH tunnel anyway.
ssh ubuntu@<PUBLIC DNS> -i <KEYFILE>.pem
The value for
-i is the path to the .pem file downloaded previously.
I followed these instructions to install the Ubuntu desktop and a TightVNC server, but I ended up with the grey screen of an empty X-Windows session. I needed some extra work to get it going. You should just do the following instead ;)
apt-get and install lots of things:
sudo apt-get update sudo apt-get intall ubuntu-desktop sudo apt-get intall tightvncserver sudo apt-get install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal
Launch VNC server to create an initial configuration file:
Open the configuration file in VIM:
Edit the configuration file to look like this, using
i to enter insert mode, then
:wq to save and exit:
#!/bin/sh export XKL_XMODMAP_DISABLE=1 unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources xsetroot -solid grey vncconfig -iconic & gnome-panel & gnome-settings-daemon & metacity & nautilus & gnome-terminal &
Kill and restart the VNC server to apply the settings. This needs to happen each time the VNC / X-Windows configuration is updated.
vncserver -kill :1 vncserver :1
After setting up the VNC server you need to create an SSH tunnel. Open a local console that has
ssh.exe in the path (Cmder didn’t have it but vanilla PowerShell did). The command to run is1:
ssh ubuntu@<PUBLIC DNS> -L 5902/127.0.0.1/5901 -i <KEYFILE>.pem
-L sets up the tunnel, from port
127.0.0.1 (localhost) to port
5901 on the remote server. Note that I’m setting my local endpoint to port 5902 - 5901 didn’t work for me.
If you’re on Windows, download Tight-VNC instead of using apt-get to install VNC. Connect to
127.0.0.1::5902 and use the password you gave above. You should now see your new shiny Ubuntu desktop:
If you see an empty grey window like this:
, or if parts of the Ubuntu desktop seem to be missing, you will need to work on the VNC / X-Windows configuration. Make sure you’ve edited the
xstartup file for the user that the tunnel is logged in as for a start.
Quick note: to delete an instance you just need to terminate it. It doesn’t disappear from the list immediately but apparently it will. refresh nope, still there.