曾經喜歡用 RealVNC Server 實現 Linux/Windows 的遠程控制,因為 RealVNC 為收費商業軟件,支持文件傳輸,性能優化方面也做得不錯。但 RealVNC 從 5.0 版本開始協議兼容性方面就加入了很多私有的東西,且客戶端只能是 RealVNC 自己的客戶端。而開源 VNC 軟件如 TigerVNC 等等協議停留在穩定的 VNC 4.4 分支上,不兼容 RealVNC 5.x 以及更高的商業版本,目前大量的開源軟件都對 4.4 協議分支提供良好支持,比如 vnc-reflection 轉發;另一方面針對 Linux 遠程受控端而言,如果要傳輸文件,可以方便得使用 SSH/SFTP,而 RealVNC 的安裝配置也有些復雜,所以綜合考慮還是使用 TigerVNC 了。
TigerVNC 包含 Server 控制端,可以用來實現 VNC 服務,並且其中包含一個名為 X0VNC 的特殊服務,該服務運行后可以把當前 X11 桌面會話遠程傳輸給遠端客戶端讓其操控,而不是傳統 VNC 的虛擬會話桌面模式。網上搜索還可以發現另外一個名為 X11 VNC 的同類單獨開源軟件,功能一樣,只不過配置使用起來不如 X0VNC 方便。安裝 TigerVNC Server 很簡單,在 Fedora 下,用以下命令即可安裝:
$ sudo dnf install tigervnc-server
由於 X0VNC 每次都是將當前 X11 桌面會話傳輸給遠端客戶端,因此首先必須保證 X11 桌面會話啟動后再啟動 X0VNC,對於無人操控的遠程受控端而言,我們必須讓桌面能夠自動用某個賬號登錄進入會話,以 Fedora GNOME 為例,我們可以設置某個賬號允許其自動登錄,這樣開機后就會自動用該賬號登錄。因此,我們只需設置該賬號登錄后自動運行的程序即可達到 X0VNC 在桌面會話啟動后自行啟動的目的。賬號自動登錄的設置這里從略,網上有很多介紹,GNOME 系統設置中也有圖形化設置,很簡單,我們這里不再贅述。要配置一個 X0VNC 的自啟動服務,我們可以進入當前賬號的 ~/.config/autostart 目錄下,創建一個 x0vncserver.desktop 文件,文件內容如下:
[Desktop Entry]
Name=X0VNCServer
Comment=X0 VNC Server from TigerVNC
Exec=x0vncserver -PasswordFile=/home/someone/.vnc/passwd -AlwaysShared
Terminal=false
Type=Application
StartupNotify=true
保存后,別忘了在當前賬號下運行一下 vncpasswd 設置 VNC 的登錄密碼,然后重啟系統即可。