ubuntu系统构建VNC虚拟远程桌面

2023-11-06


本文应用场景是有远程服务器上开发或本地及远程容器开发过程中需要可视化效果的,可以按照本文进行安装。比如深度学习开发,对图片和视频数据需要进行查看。
VNC代表虚拟网络计算。从本质上讲,它是一个远程显示系统,不仅允许您在当前运行的计算机上查看桌面环境,而且从Internet上的任何地方的不同体系结构的计算机中查看远端的“桌面”环境。

VNC Server是用于在Linux环境中执行VNC(虚拟网络计算)桌面的软件。不同于Windows操作系统,只需激活远程桌面;在Linux上,必须安装VNC Server才能实时远程桌面。VNC服务器有很多软件,这里讨论如何使用TigerVNC安装VNC服务器。关于tigervnc与其它工具的区别,不做区分。

1 准备工作

首先准备一个Ubuntu 服务器,可以是18.04或者是20.04,本文在这两种系统中都有进行测试并通过。该服务器它可以通过SSH远程或直接操作屏幕上的终端。下载软件需要有互联网连接。对于计算机上的VNC客户端,可以使用VNC Viewer应用程序,例如RealVNC,这个软件很小,几十M。这里我们使用moba xterm,这个软件是免费的,同时有ssh,vncserver功能,因为一直要用ssh,所以只用这一个软件也可以。

2 安装ubuntu远程桌面

本节提供两种桌面的安装第一种是gonme,每二种是xface4。相比而言xface更加轻量级,安装过程中gonme安装2.2G依赖,xface4安装0.9G依赖。对远程而言,使用xface4更合适。在测试过程中,远程服务器上这两种桌面是都可以正常使用的,但在容器中只有xface4可以正常使用,但gonme并不能每次都使用,有时只有黑屏。
另外要说明的是服务器上通常是通过命令行管理的,默认情况下未安装桌面环境。如果您运行桌面版本的Ubuntu,请跳过此步骤。当前Ubuntu 20.04存储库中提供了各种桌面环境,一种选择是安装Gnome,它是Ubuntu 中的默认桌面环境。另一个选择是安装Xfce。它是一种快速、稳定且轻巧的桌面环境,非常适合在远程服务器上使用。

2.1 Gnome安装

sudo apt-get update
sudo apt-get install ubuntu-gnome-desktop

安装过程中gdm3和lightgdm可以任选一个,只是显示风格的不同,我是选的gdm3.
启动gnome桌面服务,并确保它在启动时运行。

sudo systemctl start gdm
sudo systemctl enable gdm

2.2 xface安装

sudo apt-get update
sudo apt-get xfce4 xfce4-goodies

桌面的安装过程会花一段时间,特别是在容器中,耐心等待安成即可。另外这两个桌面是可以同时安装的,使用时进行选择,当然同时安装是没必要的。如果使用桌面版ubuntu系统直接使用gnome时无须安装,这样也简单一些。

3 安装VNC服务器

Ubuntu 存储库中有几种不同的VNC服务器,例如TightVNC、TigerVNC和x11vnc。每个VNC服务器在速度和安全性方面都有各自的优缺点。

我们将安装TigerVNC,这是一个主动维护的高性能VNC服务器,输入以下命令以安装软件包:

sudo apt-get install xserver-xorg-core

sudo apt-get install tigervnc-standalone-server tigervnc-xorg-extension tigervnc-viewer

sudo apt-get install gsfonts-x11 xfonts-base xfonts-75dpi xfonts-100dpi

4 配置VNC服务

4.1 VNC密码设置

这一步设置连接到VNC服务器时所使用的VNC密码。使用以下命令:

vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n

输入密码,然后确认。如果需要,您可以将密码设置为只读权限。如果不需要,可以按N键确认。
密码文件存储在~/.vnc目录中,如果不存在则创建该目录。

如果vncpasswd命令无效,请使用vncserver命令,输入密码,然后终止vncserver。

vncserver
vncserver -kill :*

4.2 启动脚本设置

接下来,我们将创建一个启动脚本作为初始配置,将在激活VNC服务器时执行。使用vim命令创建~/.vnc/xstartup文件。

vim ~/.vnc/xstartup

然后填写以下代码:

#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

vncconfig -iconic &

dbus-launch --exit-with-session gnome-session &
#dbus-launch --exit-with-session startxfce4 &

以上内容中有要加注释的话可以直接加#号,最后一行依据你所选用的桌面类型来进行配置。保存并退出后,给~/.vnc/xstartup文件添加可执行权限:

sudo chmod a+x ~/.vnc/xstartup

4.3 启动VNCSERVER

vncserver :1 -localhost no -geometry 1920x1080 -depth 24
# -localhost no是为了让其他计算机可以访问,而不仅仅是本地。没有这个option的话就只能本地VNC连接。从下面vnc监听状态可以看出,监听地址是0.0.0.0,而不是默认的127.0.0.1。
# vncserver -localhost no
# 不添加:1也可以,默认是1,可以手动选择

上述选项将创建一个会话,允许外部连接具有1920x950像素分辨率和清晰度24.
在Ubuntu操作系统上,分辨率可以用xrandr -q命令查看.容器中无法查看。
您可以根据自己的喜好配置分辨率和清晰度。
返回内容如下:

root@07265f50ffb2:~# vncserver :1 -localhost no -geometry 1920x950 -depth 24

New '07265f50ffb2:1 (root)' desktop at :1 on machine 07265f50ffb2

Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/07265f50ffb2:1.log

Use xtigervncviewer -SecurityTypes VncAuth,TLSVnc -passwd /root/.vnc/passwd 07265f50ffb2:1 to connect to the VNC server.

在上面的输出中,请注意主机名后面的:1。这表示正在运行vnc服务器的显示端口号。在此示例中,服务器在TCP端口5901(5900+1)上运行。如果使用vncserver创建第二个实例,它将在下一个可用端口(即:2)上运行,这意味着服务器在端口5902(5900+2)上运行。

要记住的重要一点是,在使用VNC服务器时,:X是表示5900+X的显示端口。
有时会报错:

A VNC/X11 server is already running as :1 on machine 8ad402711f3d

需要进行如下操作:

 rm -f /tmp/.X1-lock

 rm -f /tmp/.X11-unix/X1

4.4 查看开启的vncserver

可以通过输入以下命令获取所有当前正在运行的VNC会话的列表:

vncserver -list

返回内容:
在这里插入图片描述

4.5 停止VNCserver

使用带有-kill选项和服务器编号作为参数的vncserver命令停止VNC实例:

vncserver -kill :1 #只杀死5901
vncserver -koll :* #合部杀死

显示为:
在这里插入图片描述

5 Mobaxterm连接VNC服务

在这里插入图片描述
在这里插入图片描述
输入Ip和端口即可。容器要使用与主机映射的端口号如:

sudo docker run -itd --gpus all -p 8001:8001 -p 8002:5901 --restart always --privileged --ipc=host imagename:tag bash

如上命令启动的容器要使用端口8002,用户名是root.
测试效果为:
在这里插入图片描述
上图为容器中ubuntu20.04 xface4界面
在这里插入图片描述
上图为远程服务器ubuntu18.04中xface4界面。

在这里插入图片描述
上图为gnome桌面。

参考

  1. https://www.ywnz.com/linuxyffq/8969.html
  2. https://baijiahao.baidu.com/s?id=1645514514391414083&wfr=spider&for=pc
  3. https://blog.csdn.net/evan_one/article/details/118059926
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ubuntu系统构建VNC虚拟远程桌面 的相关文章

随机推荐

  • 命令行卸载java_卸载java

    有小伙伴经常会遇到Java没有卸载干净的情况 造成重新安装JDK能正常安装 接着安装JRE的时候总是报1603错误 虽然说JRE安装报错了没安装上 但是eclipse IntelliJ IDEA和AndroidStudio都能正常打开和使用
  • 实时音频编解码之二编码学数学知识

    本文谢绝任何形式转载 谢谢 1 3 编码数学算法 1 3 1 定点和浮点 编码的一些参数是经过定标和量化的 然后再将其送入区间编码器进一步压缩数据量 为了降低执行编解码的内存和算力要求 Opus编码器中很多地方使用了Q定标方式将浮点数转化为
  • DTMF通信系统设计—基于MATLAB和STM32

    文章目录 1 摘要 2 设计任务 3 课程设计主要解决的问题 4 设计内容 4 1 整体设计方案 4 2 详细设计内容 5 结果与分析 5 1 基于MATLAB 的DTMF 通信系统 5 2 双机通信模拟 5 2 基于单片机的DTMF 通信
  • C语言堆排序

    堆排序 Heapsort 是一种在时间复杂度上达到了最优的基于比较的排序算法 堆排序算法是指利用堆这种数据结构所设计的一种排序算法 堆积是一个近似完全二叉树的结构 并同时满足堆积的性质 即子节点的键值或索引总是小于 或者大于 它的父节点 堆
  • 为什么想来我们公司工作?- 面试常见问题解析

    在面试的过程中 你的面试官可能会问你这样一个问题 你为什么想在我们公司工作 这是面试最常见的问题之一 这个问题看似简单 但回答时一定要提前有所准备 一般来说 面试官在面试时提问这个问题是希望通过应聘者的回答来衡量应聘者对他们公司的感兴趣程度
  • 综述:运动目标跟踪算法

    运动目标跟踪算法总结 1 传统的目标跟踪算法 运动目标跟踪 首先对目标进行有效地表达 然后在接下来的视频序列的每一帧中找到相似度与目 标最大的区域 从而确定目标在当前帧中的位置 早期的生成式方法主要有两种思路 1 依赖于目标外观模型 通过对
  • 华为2018校园招聘(提前批) 笔试 输出ascii最小的最长连续字符串

    题目 给定一串字符 里面有些字符有连续出现的特点 请寻找这些连续字符串中最长的串 如果最长的串有多个 请输出ascii最小的个 思路 利用start和end来记录当前连续出现的子字符串的起始位置 如果当前字符串长度 gt 历史最大长度或者两
  • 【OpenCV学习笔记】【算法学习】一(模板匹配)

    include
  • OpenCV的常用函数

    OpenCV的常用函数 1 imread函数 2 namedWindow函数 3 imshow函数 4 输出图像到文件 imwrite函数 1 imread函数 首先 我们看imread函数 可以在OpenCV官方文档中查到其原型如下 Ma
  • 2023年交通与智慧城市国际会议ICoTSC 2023

    会议日期 2023 5 26 至 2023 5 28 会议简介 2023年交通与智慧城市国际会议 ICoTSC 2023 重要信息 会议网址 www icotsc org 会议时间 2023年7月28 30日 召开地点 长沙 截稿时间 20
  • Unity3D相关面试题

    Unity3D相关面试题 第一部分 1 请简述值类型与引用类型的区别 2 C 中所有引用类型的基类是什么 3 请简述ArrayList和List的主要区别 4 请简述GC 垃圾回收 产生的原因 并描述如何避免 5 请描述Interface与
  • 一个简洁的cublasSmatinvBatched应用示例

    可以简单地粘贴放入一个cuBLAS sample的文件中替代运行 一个简介的cublasSmatinvBatched 示例 Includes system include
  • Mindmanager如何可以取消自动首字母大写

    主页 字体 设置字体样式 格式字体 文本和大写 文本大写 无 参考网址 https tieba baidu com p 3752136361
  • SSM整合框架(spring+spring MVC)

    SSM整合框架 spring spring MVC 1 创建数据库配置文件database propreties driver com mysql jdbc Driver url jdbc mysql localhost 3306 数据库名
  • 编译安装webos

    一 安装手册 https www openwebosproject org docs build guide UwLO5mKSzlA 二 安装步骤 1 安装依赖库 sudo apt get update sudo apt get insta
  • raise NoReverseMatch("%s is not a registered namespace" % key)

    很蛋疼 第一次仿照写django项目也是出现这个问题 现在又跟着追梦人物的博客又写了一遍 昨晚因为这个问题搞到晚上一点多 出现的问题 raise NoReverseMatch s is not a registered namespace
  • MySQL主从复制(主:linux Redhat MySQL 5.1;从:win10,MySQL5.5)

    MySQL主从复制 主 linux Redhat MySQL 5 1 从 win10 MySQL5 5 主MySQL设置 从MySQL设置 查看主服务状态 show master status 注意事项 主MySQL设置 在linux中的
  • Q Learning学习笔记

    Q Learning学习笔记 这两天跟着莫烦大神的视频将强化学习 Reinforcement Learning 中的Q Learning学了一遍 颇有收获 便记录于此 希望大家不吝赐教 欢迎补充纠错 文章目录 Q Learning学习笔记
  • R语言小作业2(向量操作)

    任务一 生成简单向量 任务内容 生成如下向量 金融1801甲 金融1801乙 金融1802甲 金融1802乙 金融1803甲 金融1803乙 金融1804甲 金融1804乙 代码及结果 gt x lt paste 金融 rep c 1801
  • ubuntu系统构建VNC虚拟远程桌面

    文章目录 1 准备工作 2 安装ubuntu远程桌面 2 1 Gnome安装 2 2 xface安装 3 安装VNC服务器 4 配置VNC服务 4 1 VNC密码设置 4 2 启动脚本设置 4 3 启动VNCSERVER 4 4 查看开启的