当前位置: 首页 > news >正文

在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 用户可以选择多种选项:vinagrekrdc、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 终端使用以下命令来完成。记得将 userserver_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集合中,键为和&#xff0…...

苹果开发者取消自动续费

文档: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) 优势与挑战 优势&…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

<6>-MySQL表的增删查改

目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表&#xf…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...

django filter 统计数量 按属性去重

在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

什么是EULA和DPA

文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...