Graphical desktop can be viewed in various ways. In this document, we describe two ways: RDP (Remote Display Protocol) and plain X11 forwarding. Other methods include VNC and running a Mir shell through X11 forwarding (as described here).
The images used by Multipass do not come with a graphical desktop installed. For this reason, a desktop environment must be installed (we use
ubuntu-desktop but there are as many other options as flavors of Ubuntu exist), along with the RDP server (we will use here
xrdp but there are also other options such as
freerdp). For this, we must log in to the running Multipass instance first:
$ multipass shell headbanging-squid
and, once inside the instance,
$ sudo apt update $ sudo apt install ubuntu-desktop xrdp
Then, we need a user with a password in order to log in. One possibility is to set a password to the default
$ sudo passwd ubuntu
We will be asked to enter and re-enter a password. And we are done on the server side.
We then quit the Ubuntu shell on the instance with the
logout command and find out in the host the IP address to connect to:
$ multipass list Name State IPv4 Image headbanging-squid Running 10.49.93.209 Ubuntu 22.04 LTS
Thus, we will use the IP address
10.49.93.209 to connect to the RDP server on the instance.
If the IP address of the instance is not displayed in the output of
multipass list, it can be obtained directly from the instance, with the command
On Linux, there are applications such as Remmina to visualize the desktop (make sure the package
remmina-plugin-rdp is installed in your host along with
To directly launch the client, run the following:
$ remmina -c rdp://10.49.93.209
The system will ask for username (
ubuntu) and the password set above, and then the Ubuntu desktop on the instance will be displayed.
To connect on MacOS, we can use the “Microsoft Remote Desktop” application, from the Mac App Store.
On Windows, we can connect to the RDP server with the “Remote Desktop Connection” application. There, we enter the virtual machine’s IP address, set the session to XOrg and enter the username and password we created on the previuos step. And we are done… a graphical desktop!
It might be the case that we only want Multipass to launch one application and to see only that window, without having the need for a complete desktop. It turns out that this setup is simpler than the RDP approach, because we do not need the Multipass instance to deploy a full desktop. Instead, we can use X11 to connect the applications in the instance with the graphical capabilities of the host.
Linux and MacOS run X by default and the instance, so no extra software in the host is needed. We have the possibility here to be a bit more secure than on Windows, by using authentication in X forwarding. However, we will forward through ssh in order to avoid struggling with
xauth stuff. Unfortunately,
multipass shell does not let the user to pass extra parameters to
ssh, so we cannot use the shell through Multipass. We will allow our user in the host to log in to the Multipass instance through ssh, by copying our public key, in file
~/.ssh/id_rsa.pub to the list of authorized keys of the instance, in file
~/.ssh/authorized_keys. We can do this with the following command (replace the example instance name with yours):
$ multipass exec rocking-squirrel -- bash -c "echo `cat ~/.ssh/id_rsa.pub` >> ~/.ssh/authorized_keys"
If the file
~/.ssh/id_rsa.pub does not exist, it means that the SSH keys must be created. Use
ssh-keygen to create them and retry the copy.
Then, check the IP address of the instance, using
multipass info rocking-squirrel. Finally, we can log in to the instance using X forwarding doing
# replace `xx.xx.xx.xx` with the IP address obtained above $ ssh -X email@example.com
And test the setting running on the instance some program:
$ sudo apt install x11-apps $ xlogo &
A small window containing the X logo must show up. Done!
The procedure for MacOS should be almost the same as for Linux, but I don’t have a Mac at hand for testing it. Contributions are welcome
Windows knows nothing about X, therefore we need to install an X server. Here we will use VcXsrv. Other options would be Xming (however, newest versions are paid but older versions can still be downloaded for free from their SourceForge site) or installing an X server in Cygwin.
The first step would be thus to install VcXsrv and run the X server through the newly created start menu entry “XLaunch”. Some options will be displayed. In the first screen, we should choose “Multiple windows” and set the display number; leaving it in -1 is a safe option. The “Next” button brings us to the “Client startup” window, on which we should choose “Start no client”. “Next” will show us the “Extra settings”, and there we should activate the option “Disable access control”. Pressing “Next” will give us then the option to save the settings, and finally we can start the X server. An icon will show up in the dock: we are done with the X server.
To configure the client (that is, the Multipass instance) we will need the host IP address, which can be obtained with the console command
ipconfig. Then start the instance and set the
DISPLAY environment variable to the server display on the host IP:
# replace `xx.xx.xx.xx` with the IP address obtained above $ export DISPLAY=xx.xx.xx.xx:0.0
We are done, and we can test forwarding using
xlogo as in the Windows section.