本人电脑Ubuntu18.04LTS系统,最小化安装,不过勾选了Gnome桌面。电脑上安装了KVM,并建了2个win10的虚拟机。最终目的是为了能够在局域网内用其他电脑访问win10桌面的。不过本人Linux小白一个,先从访问Linux宿主机开始,用个VNC,就当学习。
所以这篇博客是介绍如何在Ubuntu18.04LTS上安装配置VNC,使其桌面能被其他局域网内的电脑连接访问。 主要留给自己看,怕忘。
看了很多资料,基本的结论是Ubuntu18自带的Gnome虽然自身运行时桌面、任务栏等等都很OK,但是通过VNC分享后,是无法完美显示的,我在操作过程中就发现VNC Client端连接后没有任务栏,启动栏,桌面等等,连上后一片黑。有的兄弟说一片灰,那是因为xstartup文件里设置的关系,后面会讲到。颜色不是关键,关键是没东西。
好在Ubuntu18提供了分享工具Vino。但是如果你用networkd来管理你的网络,而不是networkmanager,vino无法找到网络,无法开启。我就是因为使用了networkd,所以vino用不了。如果你用的是networkmanager,可以自行搜索以下vino的使用方法。
宗上所述,我们要再安装一个桌面环境,能够在VNC上正常运行。根据网上众多教程,这里列3个桌面环境,自己去了解一下想要哪个。
记得网上还看到过用ubuntu-desktop,这个跟3其实一样,只是少了几个包,找不到教程了,就不推荐了。我比较推荐1或2,因为3太大了,600多M,实在不想消耗这么多资源。而且我电脑上自带Gnome桌面,不知道再装它会不会出问题(顺便提一下,2是我亲测的,1和3我没有试过,不过有网友是这么干的)。接下来分不同桌面来介绍安装
rd8@myserver:~$ sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
我没有试xface4,有网友给了教程,参考1
网上见过两种方案,一种是直接安装gnome-session-flashback,另一种是分别安装一些必要的包,包括gnome-panel, gnome-settings-daemon, metacity。我试着apt-get了一下,其实安装gnome-session-flashback也好,安装gnome-panel也好,都会把gnome-applets, gnome-panel, gnome-session-flashback, metacity这4个package安装起来。所以不用纠结了。
rd8@myserver:~$ sudo apt-get install gnome-session-flashback
或者
rd8@myserver:~$ sudo apt-get install gnome-panel
注意,我的系统本来就是有桌面的。如果你的没有,可能还要安装gnome-terminal(命令行终端),和nautilus(文件管理窗口),还有gnome-settings-daemon。自己查看下系统有没有,没有就装上。这些以后都是要用的。
先安装,然后启动,并设置成开机自动启动。这个包很大哦。
rd8@myserver:~$ sudo apt-get install ubuntu-gnome-desktop
rd8@myserver:~$ sudo systemctl start gdm
rd8@myserver:~$ sudo systemctl enable gdm
ubuntu-gnome-desktop我也没有试过安装,参考了网友:参考2,参考3
这里我就简单粗暴地全关了,指令:
ufw disable #关防火墙
ufw status #查看防火墙状态,inactive表示关闭了
rd8@myserver:~$ sudo ufw disable
rd8@myserver:~$ sudo ufw status
电脑1通过VNC访问电脑2,那么电脑1只需要安装VNC Client软件,电脑2只需要安装VNC Server软件。这里我们讲Server。
网上看了好多文章,VNC Server软件有TigerVNC, TightVNC, Vino (Gnome desktop默认), x11vnc, krfb (KDE desktop默认), vnc4server等等。没有找到具体对比,但是看下来tigervnc好像比较好。vnc4server也不错,比tigervnc精简,功能上简化了。我就tigervnc了。这里有个tigervnc的包列表,可以了解一下。
指令:
apt-get install tigervnc-standalone-server #ubuntu18下要安装的是tigervnc-standalone-server,有些说安装tigervnc-server,可能是其他linux发行版用的,apt-get get不到啊。
apt-get install tigervnc-xorg-extension #这个可能不是必须的,先记录一下,我是安装了的
apt-get install tigervnc-common #这个可能也不是必须的,先记录一下,我没安装
rd8@myserver:~$ sudo apt-get install tigervnc-standalone-server
rd8@myserver:~$ apt-get install tigervnc-xorg-extension
tigervnc-xorg-extension会依赖一个xorg core的包,有提示就安装。
当你用其他电脑的VNC Viewer来连接VNC Server时,需要一个密码。跟你系统用户密码没有关系。
rd8@myserver:~$ vncpasswd
Passwork:
Verify:
Would you like to enter a view-only password (y/n)? n
rd8@myserver:~$ ls ~/.vnc
passwd
查看~/.vnc目录下有passwd,说明密码设置完毕。
这里其实就是配置xstartup文件。
rd8@myserver:~$ sudo nano ~/.vnc/xstartup
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 & #启动xface4
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey #设置背景色
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
export XKL_XMODMAP_DISABLE=1
export XDG_CURRENT_DESKTOP="GNOME-Flashback:GNOME"
export XDG_MENU_PREFIX="gnome-flashback-"
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey #设置背景色
vncconfig -iconic & #
#gnome-terminal & #连接后会直接打开一个terminal窗口
#nautilus & #连接后会直接打开一个文件窗口
gnome-session --session=gnome-flashback-metacity --disable-acceleration-check &
上面这个是我亲测的,应该没问题。文章最后附有截图。
有网友用了如下类似配置,单独启动了gnome-panel, gnome-settings-daemon, metacity。虽然任务栏,窗口都出来了,但是没有桌面背景,没有桌面图标。文章最后附有截图。
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
export XKL_XMODMAP_DISABLE=1
xsetroot -solid grey #设置背景色
gnome-panel &
gnmoe-settings-daemon &
metacity &
gnome-terminal & #连接后会直接打开一个terminal窗口
nautilus & #连接后会直接打开一个文件窗口
xstartup文件里都有gnome-terminal和nautilus,如果想在VNC连接后自动打开一个terminal和文件窗口的,可以把这2个item前面的“#”注释符去掉。
#!/bin/sh
# Start Gnome 3 Desktop
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &
dbus-launch --exit-with-session gnome-session &
也有人说用这个配置:
#!/bin/sh
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &
gnome-session &
有条件的朋友可以试一下,顺便留言告知一下结果哈。
rd8@myserver:~$ sudo chmod u+x ~/.vnc/xstartup
至此,startup文件修改完成。
我看到有很多人跟我遇到了同样的问题,就是连接VNC后屏幕上一片黑或者灰,其实就是桌面环境没有设置好。比如用Ubuntu18自带的Gnome就不行,或者没有安装gnome-session-flashback等就开始连接,或者安装了这些包,但是xstartup文件设置不对,都是这个结果。大家可以到~/.vnc/下面对应的log文件里找找,看下错误信息。
另外,大家发现有些xtartup文件里会有一行xsetroot -solid grey,就是设置底色为灰色。有没有这句都不影响使用。为什么桌面环境无法加载时是一片灰呢?就是这句话造成的。没有这句话,底色就是黑的。你也可以设置其他颜色。
启动就不多讲了,网上有很多教程。就直接写下我的启动代码
rd8@myserver:~$ sudo vncserver :2 -localhost no
rd8@myserver:~$ sudo netstat -ntupl|grep vnc
tcp 0 0 0.0.0.0:5902 0.0.0.0:* LISTEN 5187/Xtigervnc
tcp6 0 0 :::5902 :::* LISTEN 5187/Xtigervnc
:2是用了5902端口,我的5901好像有点问题,小白一个,不去管它了。
-localhost no是为了让其他计算机可以访问,而不仅仅是本地。没有这个option的话就只能本地VNC连接。从下面vnc监听状态可以看出,监听地址是0.0.0.0,而不是默认的127.0.0.1。
记得不用VNC了之后把VNC Server关掉,vncserver -kill :2
。vncserver -kill :*
是把所有VNC Server全部关掉。
下图是我安装gnome-session-flashback,但是单独启动gnome-panel,gnome-terminal等的连接画面。
在没有安装gnome-session-flashback之前,连接的画面没有任务栏。
下图是我安装了gnome-session-flashback,并启动gnome-session后远程连接的画面。这是为的成品啊。
最后感谢几位作者的文章以及论坛大神
https://blog.csdn.net/catshitone/article/details/103181202
https://www.linuxidc.com/Linux/2019-08/159849.htm
https://www.cyberciti.biz/faq/install-and-configure-tigervnc-server-on-ubuntu-18-04/
https://stackoverflow.com/questions/42296329/how-to-properly-configure-xstartup-file-for-tightvnc-with-ubuntu-vps-gnome-envir