Welcome to the Linux Foundation Forum!

05. Remote Access - VNC on Ubuntu and derivatives

Options

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:

  1. Install the tigervnc-standalone-server etc. packages. Then run the vncserver. It will ask for a password, which then stored under ~/.vnc/passwd.
  2. 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).
  3. The important file is the xstartup script file, which is not created by default. The man page specifies it as $HOME/.vnc/Xvnc-session:

$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.

  1. 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

  1. The vncserver needs to read that file, so we kill the vncserver and restart it:
vncserver -kill
vncserver
  1. 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.

  1. 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?

Comments

  • lee42x
    lee42x Posts: 380
    Options

    Hi Heiko! Thank you for the detailed explanation.

    A couple of points that might help:

    Re-tested on Ubuntu 18.04. The initial pass failed as described, however, the HINTS in step 3 say to create a /home/student/.vnc/xstartup file. The text of the file is in the HINT and in the SOLUTIONS directory. This will clear the initial error.

    I do not have "mate-session" installed but doesn't that start a new desktop? The supplied xstartup file contains only a couple simple apps xterm and xeyes. The HINTS also mention you may have to install the applications.

    We will improve the sequence of the steps to improve the lab exercise.

    Thank you for your observations,
    Lee

  • luisviveropena
    luisviveropena Posts: 1,154
    edited July 2020
    Options

    Hi @heiko_s , I'm glad you made it work!

    I got it working on Ubuntu 18.04; in my test case, the startup config file is created for the user as soon as I start the server. So I edited and I used xfce4 instead, as mate was not working by default, and also choose it because it's lighter. My config file looks like this:

    luis@ubuntu18server:~$ cat .vnc/xstartup
    #!/bin/sh
    
    #xrdb $HOME/.Xresources
    #xsetroot -solid grey
    #x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
    #x-window-manager &
    # Fix to make GNOME work
    #export XKL_XMODMAP_DISABLE=1
    #/etc/X11/Xsession
    unset SESSION_MANAGER
    unset DBUS_SESSION_BUS_ADDRESS
    exec startxfce4
    

    So I commented everything and I added the last three lines, which is very similar to yours, but the desktop environment.

    Hint: try it from a remote host using a ssh tunnel with the "via" parameter for vncviewer.

    Many regards,
    Luis.

  • heiko_s
    heiko_s Posts: 99
    edited July 2020
    Options

    Thanks Lee,

    Of course you are right and I also saw the xstartup file under SOLUTIONS. The twm didn't work for me, it's usually not installed. In most cases Ubuntu users will have gnome-session, I prefer mate-session.

    In either case, I cannot "share" my existing screen. I guess I must have missed something (perhaps I need to DuckDuck ubuntu screen sharing vnc).

    And here is one search result: https://websiteforstudents.com/access-ubuntu-18-04-lts-beta-desktop-via-vnc-from-windows-machines/

  • lee42x
    lee42x Posts: 380
    Options

    The ViNC session is a separate X session, not shared.

  • lee42x
    lee42x Posts: 380
    Options

    I am mistaken, sharing an existing screen can be done with tiger VNC. Our current lab does not demo that functionality, perhaps in the future.

  • heiko_s
    heiko_s Posts: 99
    Options

    It's been ages since I used VNC (must have been in 2005), but I vaguely remember having shared an existing desktop. Thanks for confirming.

Categories

Upcoming Training