在Ubuntu 16.04上安装和配置VNC的方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
###介绍
VNC,即“Virtual Network Computing”,是一种连接系统,允许您使用键盘和鼠标与远程服务器上的图形桌面环境进行交互。对于尚未熟悉命令行的用户来说,它使得在远程服务器上管理文件、软件和设置变得更加容易。
在本指南中,我们将在 Ubuntu 16.04 服务器上设置 VNC,并通过 SSH 隧道安全地连接到它。我们将使用的 VNC 服务器是 TightVNC,这是一个快速且轻量级的远程控制软件包。选择 TightVNC 将确保即使在较慢的互联网连接上,我们的 VNC 连接也能保持流畅和稳定。
##先决条件
要完成本教程,您需要:
-
通过 Ubuntu 16.04 初始服务器设置教程设置了 sudo 非根用户的 Ubuntu 16.04 Droplet。请注意,本教程可以在任何大小的 Droplet 上完成,但是在较小的 Droplet 上构建 VNC 可能会比较受功能限制。
-
安装了支持通过 SSH 隧道进行 VNC 连接的 VNC 客户端的本地计算机。如果您使用 Windows,可以使用 TightVNC、RealVNC 或 UltraVNC。Mac OS X 用户可以使用内置的屏幕共享程序,或者使用跨平台应用程序如 RealVNC。Linux 用户可以选择多种选项:
vinagre、krdc、RealVNC、TightVNC 等。
##步骤 1 — 安装桌面环境和 VNC 服务器
默认情况下,Ubuntu 16.04 Droplet 不会安装图形桌面环境或 VNC 服务器,因此我们将从安装这些开始。具体来说,我们将安装最新的 Xfce 桌面环境和官方 Ubuntu 仓库中提供的 TightVNC 软件包。
在您的服务器上,安装 Xfce 和 TightVNC 软件包。
sudo apt-get update
sudo apt install xfce4 xfce4-goodies tightvncserver
安装完成后,使用 vncserver 命令设置安全密码来完成 VNC 服务器的初始配置。
vncserver
系统会提示您输入和验证密码,以及一个只读密码。使用只读密码登录的用户将无法使用鼠标或键盘控制 VNC 实例。如果您想要使用 VNC 服务器向其他人演示某些内容,这是一个有用的选项,但不是必需的。
运行 vncserver 命令会通过创建默认配置文件和连接信息来完成 VNC 的安装。安装了这些软件包后,您现在已经准备好配置 VNC 服务器了。
##步骤 2 — 配置 VNC 服务器
首先,我们需要告诉 VNC 服务器在启动时执行哪些命令。这些命令位于家目录下的 .vnc 文件夹中的名为 xstartup 的配置文件中。在上一步中运行 vncserver 时,启动脚本已经创建好了,但我们需要修改一些命令以适配 Xfce 桌面环境。
当 VNC 首次设置时,它会在端口 5901 上启动默认服务器实例。这个端口称为显示端口,并被 VNC 称为 :1。VNC 可以在其他显示端口上启动多个实例,如 :2、:3 等。在使用 VNC 服务器时,请记住 :X 是一个显示端口,指的是 5900+X。
因为我们将要更改 VNC 服务器的配置,所以我们需要先停止在端口 5901 上运行的 VNC 服务器实例。
vncserver -kill :1
输出应该类似于以下内容,PID 可能不同:
Killing Xtightvnc process ID 17648
在开始配置新的 xstartup 文件之前,让我们先备份原始文件。
mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
现在使用 nano 或您喜欢的文本编辑器创建一个新的 xstartup 文件。
nano ~/.vnc/xstartup
将以下命令粘贴到文件中,以便在启动或重新启动 VNC 服务器时自动执行这些命令,然后保存并关闭文件。
[secondary_label ~/.vnc/xstartup]
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
文件中的第一个命令 xrdb $HOME/.Xresources 告诉 VNC 的 GUI 框架读取服务器用户的 .Xresources 文件。.Xresources 是用户可以对图形桌面的某些设置进行更改的地方,比如终端颜色、光标主题和字体渲染。第二个命令简单地告诉服务器启动 Xfce,您将在其中找到所有您需要舒适地管理服务器的图形软件。
为了确保 VNC 服务器能够正确使用这个新的启动文件,我们需要为其授予可执行权限。
sudo chmod +x ~/.vnc/xstartup
现在,重新启动 VNC 服务器。
vncserver
服务器应该启动,并输出类似于以下内容:
New 'X' desktop is your_server_name.com:1Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/liniverse.com:1.log
##第三步 —— 测试 VNC 桌面
在这一步中,我们将测试您的 VNC 服务器的连接性。
首先,我们需要在本地计算机上创建一个安全地转发到 VNC 的 localhost 连接的 SSH 连接。您可以通过 Linux 或 OS X 终端使用以下命令来完成。记得将 user 和 server_ip_address 替换为您服务器的 sudo 非根用户名和 IP 地址。
ssh -L 5901:127.0.0.1:5901 -N -f -l username server_ip_address
如果您使用图形化 SSH 客户端,如 PuTTY,在程序的 SSH 隧道设置中,将 server_ip_address 作为连接 IP,并设置 localhost:5901 为新的转发端口。
接下来,您可以使用 VNC 客户端尝试连接到 localhost:5901 的 VNC 服务器。您将被提示进行身份验证。要使用的正确密码是您在第一步中设置的密码。
连接成功后,您应该会看到默认的 Xfce 桌面。它应该看起来像这样:
!VNC connection to Ubuntu 16.04 server
您可以通过文件管理器或命令行访问主目录中的文件,如下所示:
!Files via VNC connection to Ubuntu 16.04
##第四步 —— 创建 VNC 服务文件
接下来,我们将把 VNC 服务器设置为一个 systemd 服务。这将使它可以像任何其他 systemd 服务一样根据需要启动、停止和重新启动。
首先,使用您喜欢的文本编辑器创建一个名为 /etc/systemd/system/vncserver@.service 的新单元文件:
sudo nano /etc/systemd/system/vncserver@.service
将以下内容复制并粘贴到其中。确保更改 User 的值和 PIDFILE 中的用户名的值以匹配您的用户名。
[secondary_label /etc/systemd/system/vncserver@.service ]
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target[Service]
Type=forking
User=sammy
PAMName=login
PIDFile=/home/sammy/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
ExecStop=/usr/bin/vncserver -kill :%i[Install]
WantedBy=multi-user.target
保存并关闭文件。
接下来,让系统知道新的单元文件。
sudo systemctl daemon-reload
启用单元文件。
sudo systemctl enable vncserver@1.service
@ 符号后面的 1 表示服务应该出现在哪个显示编号上,本例中为默认的 :1,如上所述。
如果当前实例的 VNC 服务器仍在运行,请停止它。
vncserver -kill :1
然后像启动任何其他 systemd 服务一样启动它。
sudo systemctl start vncserver@1
您可以使用以下命令验证它是否已启动:
sudo systemctl status vncserver@1
如果启动正确,输出应该如下所示:
vncserver@1.service - TightVNC server on Ubuntu 16.04Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled)Active: active (running) since Mon 2016-04-25 03:21:34 EDT; 6s agoProcess: 2924 ExecStop=/usr/bin/vncserver -kill :%i (code=exited, status=0/SUCCESS)...systemd[1]: Starting TightVNC server on Ubuntu 16.04...systemd[2938]: pam_unix(login:session): session opened for user finid by (uid=0)systemd[2949]: pam_unix(login:session): session opened for user finid by (uid=0)systemd[1]: Started TightVNC server on Ubuntu 16.04.
##结论
您现在应该在您的 Ubuntu 16.04 服务器上拥有一个安全的 VNC 服务器,并且它正在运行。现在,您将能够使用易于使用和熟悉的图形界面管理您的文件、软件和设置。
相关文章:
在Ubuntu 16.04上安装和配置VNC的方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 ###介绍 VNC,即“Virtual Network Computing”,是一种连接系统,允许您使用键盘和鼠标与远程服务器上…...
@RequestBody注解的使用及源码解析
前言 RequestBody 注解是我们进行JavaEE开发,最常见的几个注解之一,这篇博文我们以案例和源码相结合,帮助大家更好的了解 RequestBody 注解 使用案例 1.自定义实体类 Data NoArgsConstructor AllArgsConstructor public class User {priv…...
linux 服务器数据备份 和 mysql 数据迁移
查看域名ip 查看程序所处文件位置 list open files 1、 lsof -i :port 查看端口获取进程 pid 2、lsof -i pid 1、scp 下载服务器文件到本地 security copy protocol 2、导出服务器 mysql 数据库(表)到本地 mysqldump是MySQL自带的一个实用程序&…...
安防视频监控/云存储/视频汇聚EasyCVR平台播放设备录像不稳定,是什么原因?
安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,EasyCVR基于云边端一体化架构,具有强大的数据接入、处理及分发能力,可提供7*24小时实时高清视频监控、云端录像、云存储、录像检索与回看、智能告警…...
S32V234平台开发(一)快速使用
快速使用 准备供电复位选择串口通信启动选择显示登陆系统 准备供电 s32v234可以使用两种电源供电 一种是左边电源端子,一种是右边电源适配器(12V 3A) 注意:不要同时使用两种电源同时供电 复位选择 Pressing POR RESET pulls active low EXT_POR signal on S32V2…...
C# 如何防止反编译?C#程序加密混淆保护方法大全
在C#开发中,由于.NET程序集(assemblies)是基于中间语言(Intermediate Language, IL)编译的,这些程序集可以被反编译回接近原始源代码的形式。为了保护代码不被轻易反编译,开发者可以采取以下几种…...
企业数字化转型中的低代码开发平台应用:释放创新潜能
随着信息技术的飞速发展,企业数字化转型已成为行业趋势。在这场转型浪潮中,低代码开发平台以其独特的优势,成为众多企业实现快速迭代、高效创新的得力助手。本文将深入探讨低代码开发平台在企业数字化转型中的应用,以及如何帮助企…...
因为目录问题开通的另外一个网站的美化过程
起 其实也不完全是目录,是查找问题过程中看到别人的界面好好看,而且确实那个目录很吸引我…… 然后我在csdn看了半天,看到一个有目录的我赶紧换上,结果并不能显示。而且把原来黑色模式的给搞没有了——它居然要vip了……所以………...
RedHat运维-Ansible自动化运维基础24-寻找问题常用模块
1. ansible.builtin.uri模块的作用是____________________________; 2. ansible.builtin.uri模块的作用是____________________________; 3. ansible.builtin.uri模块的作用是____________________________; 4. 试着用ansible.builtin.uri模块…...
windows USB 设备驱动开发-USB带宽
本文讨论如何仔细管理 USB 带宽的指导。 每个 USB 客户端驱动程序都有责任最大程度地减少其使用的 USB 带宽,并尽快将未使用的带宽返回到可用带宽池。 在这里,我们认为USB 2.0 的速度是480Mbps、12Mbps、1.5Mbps,这分别对应高速、全速、低速…...
哪有什么「历史的垃圾时间」,有的只是你对自己的不诚实
时间不会服从任何人的管理,它只会自顾自地流逝。— 李笑来《把时间当作朋友》 hi,欢迎来到我的杂货铺。 最近有个概念火了,叫做「历史的垃圾时间」。 看了下相关的文章,大概是在宣扬奥地利派经济学家米赛斯关于历史的一段论述&a…...
全志A527 T527 android13支持usb摄像头
1.前言 我们发现usb摄像头在A527 android13上面并不能正常使用,需要支持相关的摄像头。 2.系统节点查看 我们查看系统是否有相关的节点生成,发现/dev/video相关的节点已经生成了。并没有问题,拔插正常。 3.这里我们需要查看系统层是否支持相关的相机, 我们使用命令进行…...
邦芒贴士:做到这8点工作生活中才能少犯错
我们之所以需要重点关注这些问题,就是为了确保自身利益能够最大化。如果大家在平日活动里能避免犯下这些错误,就会发现自己的工作效率将会大幅提升,更不用提生活也会变得愉快了很多。 大家如果曾经从建立待办事项列表中获得了很多好处的话&a…...
代码随想录算法训练营第7天
454.四数相加 题目链接:454. 四数相加 II - 力扣(LeetCode) 视频/文档链接:代码随想录 (programmercarl.com) 第一想法 遍历数组num1,num2,计算其和出现的数量,放入map集合中,键为和࿰…...
苹果开发者取消自动续费
文档:https://support.apple.com/zh-cn/118428 如果没有找到订阅,那就是账号不对 取消订阅后,就不会自动续费了,如果不放心,可以把付款绑定的方式也取消...
Phospho:LLM应用的文本分析利器
今天向大家介绍phospho文本分析平台,专门为大型语言模型(LLM)应用程序设计。它可以帮助开发者从用户或应用程序的文本消息中检测问题、提取洞见、收集用户反馈,并衡量成功。作为一个开源项目,phospho允许开发者查看和修…...
微深节能 料场堆取料无人操作系统 格雷母线
随着工业自动化的快速发展,料场堆取料作业正逐步向无人化、智能化转型。格雷母线高精度位移检测系统在料场堆取料无人操作系统中的应用,成为这一转型过程中的重要技术突破。本文将详细介绍格雷母线及其在料场堆取料无人操作系统中的应用,并探…...
Invoice OCR
Invoice OCR 发票识别 其他类型ORC: DIPS_YTPC OCR-CSDN博客...
无菌隔离器内操作规范性的验证之气流流型验证-北京中邦兴业
无菌隔离器在制药行业的使用愈加广泛,但已有的研究更多地聚焦于设计布局、物料状态等方面,对人员操作因素的影响方面关注较少。以冻干制剂生产车间为例,设计了一系列合理的无菌隔离器内干预操作,并在操作人员实行干预操作的基础上…...
【YOLOv8系列】(一)YOLOv8介绍:实时目标检测的最新突破
目录 引言 背景与发展历程 YOLOv8架构设计 1. 改进的特征提取网络 2. 多尺度特征融合 3. 新的激活函数 4. Attention机制 模型训练与优化 性能评估 应用案例 目标检测 图像分割 图像分类 姿势估计 旋转框检测(OBB) 优势与挑战 优势&…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
