0

My goal is to connect to a remote host (running Debian) such that I can control the whole desktop environment. So I tried using the vnc/x11vnc as indicated in these posts:

When I want to connect, I invoke this in the Debian host:

❯ x11vnc -rfbauth ~/.vnc/passwd
12/05/2021 06:01:16 passing arg to libvncserver: -rfbauth
12/05/2021 06:01:16 passing argx to libvncserver: /home/massisenergy/.vnc/passwd
12/05/2021 06:01:16 x11vnc version: 0.9.13 lastmod: 2011-08-10  pid: 3011
12/05/2021 06:01:16 XOpenDisplay("") failed.
12/05/2021 06:01:16 Trying again with XAUTHLOCALHOSTNAME=localhost ...
12/05/2021 06:01:16
12/05/2021 06:01:16 *** XOpenDisplay failed. No -display or DISPLAY.
12/05/2021 06:01:16 *** Trying ":0" in 4 seconds.  Press Ctrl-C to abort.
12/05/2021 06:01:16 *** 1 2 3 4
12/05/2021 06:01:20 *** XOpenDisplay of ":0" successful.
12/05/2021 06:01:20
12/05/2021 06:01:20 Using X display :0
12/05/2021 06:01:20 rootwin: 0x143 reswin: 0x2400001 dpy: 0xc74adb40
12/05/2021 06:01:20
12/05/2021 06:01:20 ------------------ USEFUL INFORMATION ------------------
12/05/2021 06:01:20 X DAMAGE available on display, using it for polling hints.
12/05/2021 06:01:20   To disable this behavior use: '-noxdamage'
12/05/2021 06:01:20
12/05/2021 06:01:20   Most compositing window managers like 'compiz' or 'beryl'
12/05/2021 06:01:20   cause X DAMAGE to fail, and so you may not see any screen
12/05/2021 06:01:20   updates via VNC.  Either disable 'compiz' (recommended) or
12/05/2021 06:01:20   supply the x11vnc '-noxdamage' command line option.
12/05/2021 06:01:20
12/05/2021 06:01:20 Wireframing: -wireframe mode is in effect for window moves.
12/05/2021 06:01:20   If this yields undesired behavior (poor response, painting
12/05/2021 06:01:20   errors, etc) it may be disabled:
12/05/2021 06:01:20    - use '-nowf' to disable wireframing completely.
12/05/2021 06:01:20    - use '-nowcr' to disable the Copy Rectangle after the
12/05/2021 06:01:20      moved window is released in the new position.
12/05/2021 06:01:20   Also see the -help entry for tuning parameters.
12/05/2021 06:01:20   You can press 3 Alt_L's (Left "Alt" key) in a row to
12/05/2021 06:01:20   repaint the screen, also see the -fixscreen option for
12/05/2021 06:01:20   periodic repaints.
12/05/2021 06:01:20
12/05/2021 06:01:20 XFIXES available on display, resetting cursor mode
12/05/2021 06:01:20   to: '-cursor most'.
12/05/2021 06:01:20   to disable this behavior use: '-cursor arrow'
12/05/2021 06:01:20   or '-noxfixes'.
12/05/2021 06:01:20 using XFIXES for cursor drawing.
12/05/2021 06:01:20 GrabServer control via XTEST.
12/05/2021 06:01:20
12/05/2021 06:01:20 Scroll Detection: -scrollcopyrect mode is in effect to
12/05/2021 06:01:20   use RECORD extension to try to detect scrolling windows
12/05/2021 06:01:20   (induced by either user keystroke or mouse input).
12/05/2021 06:01:20   If this yields undesired behavior (poor response, painting
12/05/2021 06:01:20   errors, etc) it may be disabled via: '-noscr'
12/05/2021 06:01:20   Also see the -help entry for tuning parameters.
12/05/2021 06:01:20   You can press 3 Alt_L's (Left "Alt" key) in a row to
12/05/2021 06:01:20   repaint the screen, also see the -fixscreen option for
12/05/2021 06:01:20   periodic repaints.
12/05/2021 06:01:20
12/05/2021 06:01:20 XKEYBOARD: number of keysyms per keycode 7 is greater
12/05/2021 06:01:20   than 4 and 51 keysyms are mapped above 4.
12/05/2021 06:01:20   Automatically switching to -xkb mode.
12/05/2021 06:01:20   If this makes the key mapping worse you can
12/05/2021 06:01:20   disable it with the "-noxkb" option.
12/05/2021 06:01:20   Also, remember "-remap DEAD" for accenting characters.
12/05/2021 06:01:20
12/05/2021 06:01:20 X FBPM extension not supported.
12/05/2021 06:01:20 X display is capable of DPMS.
12/05/2021 06:01:20 --------------------------------------------------------
12/05/2021 06:01:20
12/05/2021 06:01:20 Default visual ID: 0x21
12/05/2021 06:01:20 Read initial data from X display into framebuffer.
12/05/2021 06:01:20 initialize_screen: fb_depth/fb_bpp/fb_Bpl 24/32/7680
12/05/2021 06:01:20
12/05/2021 06:01:20 X display :0 is 32bpp depth=24 true color
12/05/2021 06:01:20
12/05/2021 06:01:20 Autoprobing TCP port
12/05/2021 06:01:20 Autoprobing selected TCP port 5900
12/05/2021 06:01:20 Autoprobing TCP6 port
12/05/2021 06:01:20 Autoprobing selected TCP6 port 5900
12/05/2021 06:01:20 listen6: bind: Address already in use
12/05/2021 06:01:20 Not listening on IPv6 interface.
12/05/2021 06:01:20
12/05/2021 06:01:20 Xinerama is present and active (e.g. multi-head).
12/05/2021 06:01:20 Xinerama: number of sub-screens: 1
12/05/2021 06:01:20 Xinerama: no blackouts needed (only one sub-screen)
12/05/2021 06:01:20
12/05/2021 06:01:20 fb read rate: 3248 MB/sec
12/05/2021 06:01:20 fast read: reset -wait  ms to: 10
12/05/2021 06:01:20 fast read: reset -defer ms to: 10
12/05/2021 06:01:20 The X server says there are 20 mouse buttons.
12/05/2021 06:01:20 screen setup finished.
12/05/2021 06:01:20

The VNC desktop is:      debianSR: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

12/05/2021 06:01:23 Got connection from client 10.39.3.163
12/05/2021 06:01:23   other clients:
12/05/2021 06:01:23 Normal socket connection
12/05/2021 06:01:23 Disabled X server key autorepeat.
12/05/2021 06:01:23   to force back on run: 'xset r on' (3 times)
12/05/2021 06:01:23 incr accepted_client=1 for 10.39.3.163:57928  sock=11
12/05/2021 06:01:23 Client Protocol Version 3.3
12/05/2021 06:01:23 Protocol version sent 3.3, using 3.3
12/05/2021 06:01:23 created   xdamage object: 0x2400040
12/05/2021 06:01:23 client useCopyRect: 10.39.3.163 0
12/05/2021 06:01:23 client_set_net: 10.39.3.163  0.0035
12/05/2021 06:01:24 rfbProcessClientNormalMessage: ignoring unsupported encoding type Enc(0x000003F3)
12/05/2021 06:01:24 rfbProcessClientNormalMessage: ignoring unsupported encoding type Enc(0x000003EA)
12/05/2021 06:01:24 Enabling full-color cursor updates for client 10.39.3.163
12/05/2021 06:01:24 rfbProcessClientNormalMessage: ignoring unsupported encoding type Enc(0x00000450)
12/05/2021 06:01:24 rfbProcessClientNormalMessage: ignoring unsupported encoding type Enc(0x0000044C)
12/05/2021 06:01:24 Enabling NewFBSize protocol extension for client 10.39.3.163
12/05/2021 06:01:24 rfbProcessClientNormalMessage: ignoring unsupported encoding type Enc(0x0000044D)
12/05/2021 06:01:24 rfbProcessClientNormalMessage: ignoring unsupported encoding type Enc(0x00000451)
12/05/2021 06:01:24 Using zlib encoding for client 10.39.3.163
12/05/2021 06:01:24 Pixel format for client 10.39.3.163:
12/05/2021 06:01:24   32 bpp, depth 32, little endian
12/05/2021 06:01:24   true colour: max r 255 g 255 b 255, shift r 16 g 8 b 0
12/05/2021 06:01:24 rfbProcessClientNormalMessage: ignoring unsupported encoding type Enc(0x000003F3)
12/05/2021 06:01:24 rfbProcessClientNormalMessage: ignoring unsupported encoding type Enc(0x000003EA)
12/05/2021 06:01:24 Enabling full-color cursor updates for client 10.39.3.163
12/05/2021 06:01:24 rfbProcessClientNormalMessage: ignoring unsupported encoding type Enc(0x00000450)
12/05/2021 06:01:24 rfbProcessClientNormalMessage: ignoring unsupported encoding type Enc(0x0000044C)
12/05/2021 06:01:24 Enabling NewFBSize protocol extension for client 10.39.3.163
12/05/2021 06:01:24 rfbProcessClientNormalMessage: ignoring unsupported encoding type Enc(0x0000044D)
12/05/2021 06:01:24 rfbProcessClientNormalMessage: ignoring unsupported encoding type Enc(0x00000451)
12/05/2021 06:01:24 Switching from zlib to zlib Encoding for client 10.39.3.163
12/05/2021 06:01:25 client 1 network rate 386.8 KB/sec (5119.8 eff KB/sec)
12/05/2021 06:01:25 client 1 latency:  0.5 ms
12/05/2021 06:01:25 dt1: 1.6203, dt2: 0.0000 dt3: 0.0005 bytes: 626674
12/05/2021 06:01:25 link_rate: LR_LAN - 1 ms, 386 KB/s
12/05/2021 06:01:26 copy_tiles: allocating first_line at size 61
12/05/2021 06:01:33 created selwin: 0x2400041
12/05/2021 06:01:33 called initialize_xfixes()
12/05/2021 06:01:39 client_count: 0
12/05/2021 06:01:39 Restored X server key autorepeat to: 1
12/05/2021 06:01:39 viewer exited.
12/05/2021 06:01:39 deleted 60 tile_row polling images.

But after sometime (maybe 2 mins, maybe 2 hours), it stops, which I don't know why. If I start it again, then works again for some time. Any idea what is going on/ how can I make a more reliable & long lasting (~upto 8 hours at a stretch) vnc connection?

This is my startup file:

❯ cat ~/.vnc/xstartup
#!/bin/zsh

# unset SESSION_MANAGER

xrdb $HOME/.Xresources
startxfce4 &
/etc/X11/Xsession
  1. Any suggestions for other ways to connect (such as Xpra, which I'm considering now) are also welcome!
  2. I am unable to utilise the bidirectional clipboard (it's greyed out in the Screen Sharing.app). Need to change any settings in the Debian host for that?
massisenergy
  • 105
  • 4

2 Answers2

1

Two alternatives:

  • X2Go
    It's a great remote desktop solution, actually the only one I could find where keyboard layout switching worked correctly (in case you use multiple key layouts). X2Go server is available on Debian repos; you'll need its own client, there is a Mac version.
  • xrdp
    This also works quite well; it essentially starts a Microsoft Terminal Server / RDS protocol. it's also available in Debian repos. For the client side, you need a Microsoft RDS protocol client; there is an official from MS I think and others also.

The above solutions provide 2-way clipboard.

I've used Xpra for remote application access; it was faster than X forwarding. I haven't used it for remote desktop.

Krackout
  • 2,480
  • 9
  • 25
1

You cannot use x11vnc and tightvnc at the same time. They work completely differently. x11vnc allows for remote access to an exsisting REAL X server, while tightvnc creates a new, hidden X server that VNC clients access.

I assume you want to use x11vnc as that is the command that you run. In that case please remove the tightvncserver package and ~/.vnc/xstartup, as xstartup is only used for tightvnc.

Also, when you start the x11vnc server, start it from within the exsisting X session, so that the $DISPLAY variable is set properly.

Depending on your desktop environment you may be able to find an application called "X11VNC Server" that starts x11vnc in GUI mode, to allow you to configure it easily.

To have it start automatically, add it to your .xinitrc if you're using xinit. If you're using a Display Manager, see this post.

Lennon McLean
  • 300
  • 3
  • 11