05. Remote Access - VNC on Ubuntu and derivatives
I couldn't get the tigervncserver to work on a Ubuntu 18.04 desktop VM - it failed with the message: XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":1" after 175 requests (175 known processed) with 0 events remaining. This might have to do with the fact that it is running in a VM and virt-manager is using SPICE to show the screen, which uses port 5900.
So I installed tigervnc on the Linux Mint 20 host (Ubuntu 20.04). This time the vncserver started - hurray!
But connecting to the server using vncviewer resulted in a grey screen and a message window saying: Could not acquire name on session bus
Eventually I put things together and here is how it works:
- Install the tigervnc-standalone-server etc. packages. Then run the vncserver. It will ask for a password, which then stored under ~/.vnc/passwd.
- The default configuration file is /etc/vnc.conf. The settings in there can be overwritten by a local (per user) config file ~/.vnc/vnc.conf. The latter has to be manually created (but wasn't needed in my case).
- The important file is the xstartup script file, which is not created by default. The man page specifies it as $HOME/.vnc/Xvnc-session:
A shell script specifying X applications to be run when a
TigerVNC desktop is started. If it doesn't exist and no system
default is provided in /etc/vnc.conf, tigervncserver will create
a new one which runs a couple of basic applications. To be com‐
patible with older versions of this wrapper script, we will also
use the file $HOME/.vnc/xstartup if it is present.
- To make it work, create the ~/.vnc/Xvnc-session script as follows:
#!/bin/bash unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS mate-session &
You need to change the last line depending on the desktop you run, for example gnome-session.
Make the file executable with chmod +x
- The vncserver needs to read that file, so we kill the vncserver and restart it:
vncserver -kill vncserver
- When the vncserver starts, it will tell you how to connect to it. In my case it was:
xtigervncviewer -SecurityTypes VncAuth -passwd /home/heiko/.vnc/passwd :1
vncviewer :1 will also work.
- For remote access make sure the firewall has ports 5900-5904 open (actually it can be any port starting with 5900 for display :0, 5901 for display :1 etc.).
I'm not sure if starting a new X server is the best way to do it. It doesn't connect to the active screen I'm using, but rather opens a new desktop. Any ideas on how to do that?