Warning:此教程仅适用于Ubuntu 18.04和Ubuntu 20.04,请勿使用此教程在Ubuntu 22.04上配置VNC,22.04上VNC的配置逻辑和参数集都发生了变化,比如启动VNC变为:tigervncserver -xstartup /usr/bin/xterm :1 #(1为端口号)

排坑:

  1、启动VNC: vncserver :1 -localhost no     ##:1是用了5901端口,-localhost no是为了让其他计算机可以访问,而不仅仅是本地(不设置这个,测试机用wifi连接,一直连接失败)

  2、执行“1、启动VNC: vncserver :1 -localhost no”,注意一定要退出Conda虚拟环境,使用系统环境,否则会出现无panel、toolbar以及灰屏、黑屏等各种问题 。

  3、开机启动所有用户VNC,需要编写脚本开机运行(网上很多将待执行脚本增加执行权限等配置在"/etc/init.d/"目录下的方式,在>=18.04的系统版本下均已经失效),见:.

Introduction

实现室某台服务器系统过旧、使用过久,经常崩溃,本人接手后开始进行升级。

一开始下载并打算直接安装Ubuntu 20.04 Server版本,奈何服务器以太端口不能直连外网(需要登录),代理设置又麻烦,指不定中间有需要联网安装的支持库。最终选择Ubuntu 20.04 Desktop LTS版本进行安装。安装过程省略(选择不安装第三方及媒体包等、安装完成后卸载服务器运行不必要组件和程序即可;另外,后期可按需安装切换服务器运行内核等)。——已安装OpenSSH-Server、remote端口已打开。
以下是介绍如何在Ubuntu20.04LTS上安装配置VNC,使其桌面能被其他局域网内的电脑连接访问。 

btw:以下操作相当于默认系统已经有多用户,创建多个用户

 

Setup

1. 安装服务器所需但桌面版缺少的组建和支持库

综上所述,我们要再安装一个桌面管理器环境,能够配合VNC正常运行,实现用户UI远程访问服务器。

  1. xface4: 轻量级桌面环境,适合远程桌面(中文输入、界面体验等方面的考虑,实验室其他平台正常使用(14.04~18.04),这里没有使用);
  2. gnome-session-flashback: Gnome经典桌面环境(基于Ubuntu默认自带的Gonme 3.36.4,20.04上成功配置并使用。以下将以此为例,);
  3. ubuntu-gnome-desktop: 当前最新版本的Ubuntu Gnome桌面环境(系统安装时默认自带,2017年,Ubuntu弃Unity,转而默认搭载Gnome,20.04安装上配置失败,即便多次尝试,无法连接、灰屏、仅有文件浏览器等各种问题,每次相同安装配置还出现过问题不同的情况,遂放弃)。

 

安装gnome-session-flashback:

server:~$ sudo apt-get install gnome-session-flashback

注:我的系统本来就是有桌面的。若安装的是server版本,可能还要安装:gnome-terminal、nautilus和gnome-settings-daemon等。另外,根据提示,可能还需要安装gdm3。

 

2. 关闭防火墙或者开放端口(20.04不关也行,只要ssh远程remote端口可访问即可)

##由于实验室服务器属于多人多账号使用,每个端口都分别设置防火墙端口开放就很麻烦

server:~$ sudo ufw disable   #关闭防火墙
server:~$ sudo ufw status  #查看防火墙状态

 

3. 安装VNC Server

server:~$ sudo apt-get install tigervnc-standalone-server #安装tigervnc-server ##若有提示安装:sudo apt-get install tigervnc-xorg-extension

 

4. 设置VNC密码

其他终端用VNC Viewer连接VNC Server时,需要密码(密码长度最大为6位)。跟系统用户密码无关。

server:~$ vncpasswd #每次终端输入该指令都会重置密码(不需要验证旧密码),忘记直接重置即可
  Password: #密码 
   Verify: # 再次输入密码 
  Would you like to enter a view-only password (y/n)? n #这里设置no就行了
server:~$ ls ~/.vnc #目录在/home/username/.vnc ,有passwd文件则说明设置成功

 

5. 为VNC设置桌面环境

即配置xstartup文件(每个用户目录下都要执行)。

5.1 打开/新建xstartup文件,

server:~$ vim ~/.vnc/xstartup

 

5.2 修改xstartup文件里的内容

 测试使用正常的配置如下:

#!/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 &

增加xstartup文件执行权限:

server:~$  sudo chmod +x  ~/.vnc/xstartup

至此,xstartup文件修改完成。

6. 启动VNC 

  终端输入:

server:~$ vncserver :2 -localhost no  #2为端口号,no表示非局域网内账户也可访问,每个用户目录下都要执行一次(开机运行参见开机脚本设置:https://www.cnblogs.com/Deskew/p/13798595.html,root下直接su username即可切换,无需验证秘密)

 server:~$ ps -ef|grep vnc  #查看已运行vnc端口号和对应账号,想要关掉可以查看对应pid号,直接kill即可,或者:vncserver -kill 端口号

7. 测试

ubuntu 22 内置 remote desktop vnc 密码 ubuntu 20.04 vncserver_Server