Linux 环境下安装配置 TigerVNC Server 并启用当前会话远程服务(X0VNC)
曾经喜欢用 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 的登录密码,然后重启系统即可。