Remote Desktop Access over VNC to real screen of MX Linux |
Remote Desktop Access over VNC to real screen of Ubuntu MATE |
The solution is to install x11vnc which presents the "real" desktop to VNC clients. I found and installed x11vnc from standard repositories on Ubuntu MATE and MX Linux. x11vnc works great on both distributions.
Here are my notes on how to do this.
Download and install x11vnc (and screen utility that we will use to run x11vnc) the usual way from repos:
# apt-get update
# apt-get install x11vnc screen
After downloading and installing x11vnc, as root create a VNC authentication password by entering the command:
# x11vnc -storepasswd
Enter VNC password:
Verify password:
Write password to /root/.vnc/passwd? [y]/n y
Password written to: /root/.vnc/passwd
#x11vnc - allow VNC connections to real X11 display
@reboot screen -S X11VNC-SERVER -m -d nice -n 19 ionice -c 3 x11vnc -usepw -nevershared -forever -no6 -display :0 -auth guess -loop
To start x11vnc right now instead of having to wait for the next reboot, type in:
screen -S X11VNC-SERVER -m -d nice -n 19 ionice -c 3 x11vnc -usepw -nevershared -forever -no6 -display :0 -auth guess -loop
Note: for enhanced security, you can limit x11vnc to listen to a specific interface by specifying the IP address of the interface to listen to using the additional switch "-listen ipaddr". From the man page:
-listen ipaddr listen for connections only on network interface with addr ipaddr. '-listen localhost' and hostname work too.
Check if the screen session is indeed up. For example,
# screen -ls
There are screens on:
16484.X11VNC-SERVER (03/06/2020 06:53:47 AM) (Detached)
Also check the actual screen contents. Continuing our example:
# screen -r 16484
06/03/2020 06:53:49 rfbListenOnTCP6Port: error in bind IPv6 socket: Address family not supported by protocol
06/03/2020 06:53:49 rfbListenOnTCP6Port: error in bind IPv6 socket: Address family not supported by protocol
06/03/2020 06:53:49 rfbListenOnTCP6Port: error in bind IPv6 socket: Address family not supported by protocol
06/03/2020 06:53:49 Failure autoprobing: Address family not supported by protocol
06/03/2020 06:53:49
06/03/2020 06:53:49 Xinerama is present and active (e.g. multi-head).
06/03/2020 06:53:49 Xinerama: number of sub-screens: 1
06/03/2020 06:53:49 Xinerama: no blackouts needed (only one sub-screen)
06/03/2020 06:53:49
06/03/2020 06:53:49 fb read rate: 1371 MB/sec
06/03/2020 06:53:49 fast read: reset -wait ms to: 10
06/03/2020 06:53:49 fast read: reset -defer ms to: 10
06/03/2020 06:53:49 The X server says there are 10 mouse buttons.
06/03/2020 06:53:49 screen setup finished.
06/03/2020 06:53:49
The VNC desktop is: dell-poweredge-r710:0
PORT=5900
******************************************************************************
Have you tried the x11vnc '-ncache' VNC client-side pixel caching feature yet?
The scheme stores pixel data offscreen on the VNC viewer side for faster
retrieval. It should work with any VNC viewer. Try it by running:
x11vnc -ncache 10 ...
One can also add -ncache_cr for smooth 'copyrect' window motion.
More info: http://www.karlrunge.com/x11vnc/faq.html#faq-client-caching
Press Control-a and then d to detach from the screen session (x11vnc keeps running inside the detached screen).
The "PORT=900" on the screen above confirms VNC server is listening on port 5900. We can, therefore, run a VNC client on a remote computer and point it to x11vnc server's and port 5900 to access the desktop over network. For example, from a remote client (I installed the tigervnc-viewer package on a remote MX Linux laptop to get vncviewer ):
$ vncviewer dell-poweredge-r710:5900
You will be asked to enter the VNC authentication password and then the remote X Windows desktop will be displayed on your screen.
TigerVNC viewer on MX Linux laptop displays remote Ubuntu desktop running SANYALnet Labs virtual boxes |