Ubuntu18.04实现VNC远程桌面

之前使用远程Linux系统电脑的时候采用的是ssh与teamviewer,但ssh没有图形画面,无法使用VMD等软件,而teamviewer又时常被检测为商业用途,十分闹心。最近了解到了VNC连接方法,遂尝试了一下。虽然网上教程众多,但都不甚全面,这里将自己建立VNC连接的过程记录一下,以便日后再用时查阅。

Ubuntu18.04使用的是gnome桌面系统,桌面共享功能直接使用的是vino而非vnc4server等vnc服务端。所以有两种方法实现桌面共享:一是使用vino共享gnome桌面,二是安装其他桌面系统供以vnc4server共享。

vino共享gnome桌面

vino共享桌面十分简单,Ubuntu18.04系统已经预装了最新版的vino。如果没有则可以通过命令sudo apt install vino进行安装。

安装vino以后打开设置,在共享标签下找到屏幕共享,将其状态设置为打开。勾选'允许连接控制屏幕'并设置一个6-8位的密码。

此时我们还需要取消gnome的连接权限限制,可以通过sudo apt install dconf-editor安装dconf-editor软件。打开该软件后一次打开org->gnome->desktop->remote-access,将require-encryption设置为关闭。

至此便完成了远程端的全部设置,在本地端我们可以下载VNC Viewer进行连接。打开VNC Viewer后在地址框中输入远程端的ip即可连接。

vino的连接虽然比较方便实现,但实际使用下来发现十分卡顿。而且容易出现桌面卡死的情况(这个情况在使用teamviewer时也出现过,可能是gnome桌面的问题)。所以并不推荐使用vino共享桌面。

vnc4server共享Xfce桌面

安装桌面和vnc服务器

sudo apt install xfce4 xfce4-goodies vnc4server

VNC初始设置

安装完成后使用vnc4server命令设置安全密码并初始化配置文件:

vnc4server
>>> You will require a password to access you desktop

>>> Password:
>>> Verify:

密码为6-8位,超出后会自动截断为8位。

配置VNC服务器

初始化vnc4server后会在用户目录下生成.vnc文件夹,其中的xstartup文件为vnc4server的配置文件。备份后将其修改如下:

#!/bin/bash
unset SESSION_MANAGER
unset DBUG_SESSION_BUS_ADDRESS
startxfce4 &

前两行是销毁被侵占的环境变量,最后一行表明使用的为xfce的桌面系统。上述为博文2018-06-07【Ubuntu 18.04 搭建VNC服务器】中的设置方法。为保险起见,我这里将默认的xstartup的最后一行删除,并加入上述三行内容:

#!/bin/sh

# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP" &
unset SESSION_MANAGER
unset DBUGS_SESSION_BUS_ADDRESS
startxfce4 &

正式开启VNC服务

执行vnc4server命令正式开启VNC服务。默认在5901端口上启动默认服务器实例。该端口为显示端口,由VNC称为:1。实质上VNC使用的TCP端口从5900开始,尾数与桌面号相关。1号桌面为5901,2号桌面为5902,依次类推。

手动启动VNC服务时可以直接指定分辨率与桌面号,命令如下:

vnc4server -geometry 1920x1080 :2

停止服务的命令为:

vnc4server -kill :2

关闭TCP端口的防火墙

在远程连接VNC服务之前,我们还需要关闭相应TCP端口的防火墙,命令如下:

sudo ufw allow 5902

远程连接

上述步骤完成后便可以通过VNC Viewer进行远程连接,此时连接的地址应为远程端ip:TCP端口号。此处的情形下为xxx.xx.xxx.xx:5902。VNC服务的远程连接非常流畅,完全可以与teamviewer媲美。

其他

上述的连接方法在安全性上还不够,只能在局域网中使用。有关网络安全的问题还需要日后多加学习。

目前发现VNC服务的xfce远程桌面无法打开终端???准确地说是在远程窗口打开终端后并不显示,但在远程计算机的gnome桌面上会显示。这个问题尚未能解决。

更新

关于终端无法显示的问题,原来是因为默认打开的终端是gnome终端。两个桌面系统相互独立,在xfc4下要打开xfc4终端才能够显示,其他软件同理。

参考资料

如何在Ubuntu 18.04上安装和配置VNC
2018-06-07【Ubuntu 18.04 搭建VNC服务器】
记一次VNC远程连接Linux问题解决记录(5900端口测试、KDE桌面安装)
VNC实现Windows远程访问Ubuntu 16.04(无需安装第三方桌面,直接使用自带远程工具)
Ubuntu Desktop 18.04 Gnome桌面配置VNC server
如何在Ubuntu 18.04上使用UFW设置防火墙

推荐阅读更多精彩内容