Debian

使用 (x11)vnc 控制 Debian 主機的 MacOS 螢幕共享應用程序

  • June 8, 2021

我的目標是連接到遠端主機(執行 Debian),這樣我就可以控制整個桌面環境。所以我嘗試使用這些文章中指出的 vnc/x11vnc:

當我想連接時,我在 Debian 主機中呼叫它:

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

但過了一段時間(可能是 2 分鐘,可能是 2 小時),它停止了,我不知道為什麼。如果我再次啟動它,然後再次工作一段時間。知道發生了什麼/我怎樣才能建立更可靠和更持久(最長可達 8 小時)的 vnc 連接?

這是我的startup文件:

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

# unset SESSION_MANAGER

xrdb $HOME/.Xresources
startxfce4 &
/etc/X11/Xsession
  1. 也歡迎任何有關其他連接方式的建議(例如我現在正在考慮的Xpra )!
  2. 我無法使用雙向剪貼板(在 中顯示為灰色Screen Sharing.app)。需要為此更改 Debian 主機中的任何設置嗎?

兩種選擇:

這是一個很棒的遠端桌面解決方案,實際上是我能找到的唯一一個鍵盤佈局切換正常工作的解決方案(以防您使用多個按鍵佈局)。X2Go 伺服器在 Debian repos 上可用;你需要它自己的客戶端,有一個 Mac 版本。

這也很好用;它實質上啟動了一個 Microsoft 終端伺服器/RDS 協議。它也可以在 Debian 儲存庫中找到。客戶端,需要微軟RDS協議客戶端;我認為有一位來自 MS 的官員,還有其他人。

上述解決方案提供 2 路剪貼板。

我用於Xpra遠端應用程序訪問;它比 X 轉發更快。我沒有將它用於遠端桌面。

引用自:https://unix.stackexchange.com/questions/649360