Ubuntu 20.04 上安装和配置 VNC

news/2024/10/22 18:41:57/

先决条件

请确保以具有 sudo 权限的用户身份登录。建议使用具有 sudo 权限的普通用户进行处理,而不是直接使用 root 用户。创建用户并加入 sudoers 可自行百度。

安装桌面环境

大多数服务器没有安装桌面环境,因此我们首先要安装轻量级桌面环境。

Ubuntu 存储库中有几个桌面环境,远程桌面管理建议选择安装 Xfce 。它是快速,稳定和轻量级的桌面环境,非常适合在远程服务器上使用。

首先使用以下命令更新系统

sudo apt updatesudo apt upgrade

然后,键入以下命令以在服务器上安装 Xfce :

sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

根据您的系统,下载和安装 Xfce 软件包可能需要一些时间。

安装 VNC 服务器

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

我们将安装 TigerVNC ,它是高性能 VNC 服务器,并被积积极维护。

键入以下命令以在 Ubuntu 服务器上安装 TigerVNC :

sudo apt install tigervnc-standalone-server tigervnc-common

现在安装了 VNC 服务器,下一步是运行 vncserver 命令,该命令将创建初始配置并设置密码。运行以下命令时不要使用 sudo :

vncserver

系统将提示您输入并确认密码,以及是否将其设置为仅查看密码。如果您选择设置仅查看密码,则用户将无法使用鼠标和键盘与 VNC 实例进行交互。

You will require a password to access your desktops.
Password:Verify:Would you like to enter a view-only password (y/n)? n/usr/bin/xauth:  file /home/typhoon/.Xauthority does not exist
New 'server2.typhoon.org:1 (typhoon)' desktop at :1 on machine server2.typhoon.org
Starting applications specified in /etc/X11/Xvnc-sessionLog file is /home/typhoon/.vnc/server2.typhoon.org:1.log
Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/typhoon/.vnc/passwd :1 to connect to the VNC server.

第一次 vncserver 运行命令时,它将创建密码文件并将其存储在 ~/.vnc 目录中,如果不存在,将创建该目录。

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

重要的是要记住,当使用 VNC 服务器时, :X 是一个引用的显示端口 5900+X 。

注:如果启动时出现 vnc 启动异常: is taken because of /tmp/.X11-unix/X1
此时只需要将提示的文件删除即可。再次输入 vncserver。

在继续下一步之前,首先使用带有 -kill 选项和服务器编号作为参数的 vncserver 命令停止 VNC 实例。在我们的例子中,服务器在端口 5901 (:1)中运行,因此我们将使用以下命令停止它:

vncserver -kill :1
Killing Xtigervnc process ID 7264... success!

配置 VNC 服务器

现在我们已经在服务器上安装了 Xfce 和 TigerVNC ,我们需要配置 TigerVNC 来使用 Xfce 。为此,请创建以下文件 〜/.vnc/xstartup:

vim ~/.vnc/xstartup

复制以下代码

#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4 

保存并关闭文件。无论何时启动或重启 TigerVNC 服务器,都将自动执行上述命令。

~/.vnc/xstartup 文件还需要具有执行权限。运行以下命令以确保权限正确:

chmod u+x ~/.vnc/xstartup

创建 Systemd 单元文件

我们将创建一个 systemd 单元文件,使我们能够根据需要轻松启动,停止和重新启动 VNC 服务,与任何其他 systemd 服务相同。

打开文本编辑器,将以下配置复制并粘贴到其中。

sudo nano /etc/systemd/system/vncserver@.service

请务必更改第 7 行中的用户名以匹配您的用户名。

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target[Service]
Type=simple
User=username
PAMName=login
PIDFile=/home/%u/.vnc/%H%i.pid
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver :%i -geometry 1440x900 -alwaysshared -fg
ExecStop=/usr/bin/vncserver -kill :%i[Install]
WantedBy=multi-user.target

保存并关闭文件。

通知 systemd 我们创建了一个新的单元文件:

sudo systemctl daemon-reload

下一步是使用以下命令启用单元文件:

sudo systemctl enable vncserver@1.service

符号 1 后面的数字 @ 定义了运行 VNC 服务的显示端口。这意味着 VNC 服务器将侦听端口 5901 ,正如我们在上一节中讨论的那样。

执行以下命令启动 VNC 服务:

sudo systemctl start vncserver@1.service

验证服务是否已成功启动:

sudo systemctl status vncserver@1.service
● vncserver@1.service - Remote desktop service (VNC)Loaded: loaded (/etc/systemd/system/vncserver@.service; indirect; vendor preset: enabled)Active: active (running) since Thu 2018-08-16 19:05:54 UTC; 4s agoProcess: 9893 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)Main PID: 9900 (vncserver)Tasks: 0 (limit: 507)CGroup: /system.slice/system-vncserver.slice/vncserver@1.service‣ 9900 /usr/bin/perl /usr/bin/vncserver :1 -geometry 1440x900 -alwaysshared -fg

连接到 VNC 服务器

VNC 不是加密协议,可以进行数据包嗅探。建议的方法是创建一个 SSH 隧道,该隧道将安全地将来自本地计算机的端口 5901 上的流量转发到同一端口上的服务器。

在 Linux 和 macOS 上设置 SSH 隧道

如果在计算机上运行 Linux , macOS 或任何其他基于 Unix 的操作系统,则可以使用以下命令轻松创建 SSH 隧道:

ssh -L 5901:127.0.0.1:5901 -N -f -l <username> <server_ip_address>

记得替换 username,server_ip_address 为您的服务器 root 用户名和 IP 地址。

系统将提示您输入用户密码。

该-L开关指定的端口绑定。在这种情况下,我们将5901远程连接的端口5901绑定到本地计算机上的端口。该-C开关启用压缩,而-N开关告诉ssh我们不希望执行远程命令。该-l开关指定远程登录名。

如果您使用的是图形化 SSH 客户端(如 PuTTY),请将 server_ip_address 用作连接 IP,并在程序的 SSH 隧道设置中设置localhost:5901为新的转发端口。

隧道运行后,使用 VNC 客户端进行连接localhost:5901。系统将提示您使用在步骤 1 中设置的密码进行身份验证。
在这里插入图片描述

连接后,您将看到默认的 Xfce 桌面。它应该看起来像这样:
在这里插入图片描述

测试

使用gstreamer启动视频,可以显示图形界面
在这里插入图片描述

补充

如果服务器是通过端口转发,需添加-p参数

ssh -p <ssh转发端口号> -L 5901:127.0.0.1:5901 -N -f -l <username> <server_ip_address>

参考

Ubuntu 20.04 上安装和配置 VNC

gstreamer tutorials


http://www.ppmy.cn/news/1465852.html

相关文章

网络安全等级保护,三级等保技术建议书(word原件获取)

1信息系统详细设计方案 1.1安全建设需求分析 1.1.1网络结构安全 1.1.2边界安全风险与需求分析 1.1.3运维风险需求分析 1.1.4关键服务器管理风险分析 1.1.5关键服务器用户操作管理风险分析 1.1.6数据库敏感数据运维风险分析 1.1.7“人机”运维操作行为风险综合分析 1.2…

OpenAI 近期动荡:解雇 Sam Altman 事件分析与 AI 未来展望

引言 OpenAI 的动荡从未停止。最近&#xff0c;由于 OpenAI 高层领导的更迭&#xff0c;引发了广泛的关注和讨论。特别是在 Sam Altman 被解雇后&#xff0c;再次回归 CEO 职位的过程&#xff0c;更是引起了公众和业内的巨大反响。前 OpenAI 董事会成员 Helen Toner 在最新一期…

系统架构设计师 - 操作系统(1)

操作系统 操作系统&#xff08;5-6分&#xff09;操作系统概述进程管理进程和线程的基本概念进程的状态 ★前趋图 ★★★★信号量与 PV 操作 ★★★★死锁及银行家算法 ★ 大家好呀&#xff01;我是小笙&#xff0c;本章我主要分享系统架构设计师 - 操作系统(1)知识&#xff0c…

【美羊羊拿金币问题】

问题&#xff1a; 有一天美羊羊正在草地上玩耍&#xff0c;突然天上开始落金币&#xff0c;这些金币掉落的范围在一个固定的水平区域内&#xff0c;但这些金币一旦掉落到地上就消失了&#xff0c;因此美羊羊只有不断地移动并从空中接住这些金币才能得到它们。假设金币掉落的位…

[C][栈帧]详细讲解

目录 1.栈帧1.进程地址空间2.栈帧说明 2.认识相关寄存器3.认识相关汇编命令4.过程理解5.栈帧总结6.补充 1.栈帧 1.进程地址空间 .进程地址空间 2.栈帧说明 调用函数&#xff0c;形成栈帧函数返回&#xff0c;释放栈帧局部变量是存放在栈区上的栈区内存的使用习惯是&#xff…

Python安装vnpy教程

安装vn.py(一个用于开发量化交易应用的Python库)请确保你已经安装了Python环境 (推荐使用Python3.7或以上版本)。 1. 安装Python和pip 确保你已经安装了Python和pip。如果没有,请先安装。 Windows 下载Python安装包:https://www.python.org/downloads/安装Python时,确…

基于Qt GraphicView 解析 CIM/G 电力接线图文件

本文讲述了如何使用Qt的框架来渲染展示标准的CIM/G格式的图形文件&#xff0c;也就是公用信息模型&#xff08;common information model&#xff0c;CIM&#xff09;中的G文件部分的内容。这是一种电力系统图形的交换规则&#xff0c;用于电网图形交换。 [by amjieker] CIM/G …

react的样式处理方案及样式透穿(styled-components)

方案一&#xff1a;css in js 安装styled-components npm i styled-components 基本使用 利用标记的模板文字&#xff08;JavaScript的最新添加&#xff09;和CSS的强大功能&#xff0c;样式化组件允许您编写实际的CSS代码来样式化组件。它还删除了组件和样式之间的映射—…