如何在Debian 9上安装和配置VNC

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

简介

虚拟网络计算,或者 VNC,是一种连接系统,允许您使用键盘和鼠标与远程服务器上的图形桌面环境进行交互。对于尚未熟悉命令行的用户来说,它使得在远程服务器上管理文件、软件和设置变得更加容易。

在本指南中,您将在 Debian 9 服务器上设置一个 VNC 服务器,并通过 SSH 隧道安全地连接到它。您将使用 TightVNC,一个快速轻量级的远程控制软件包。这个选择将确保我们的 VNC 连接即使在较慢的互联网连接下也能保持流畅和稳定。

先决条件

要完成本教程,您需要:

  • 通过遵循 Debian 9 初始服务器设置指南设置好的一个 Debian 9 服务器,包括一个具有 sudo 访问权限和防火墙的非根用户。
  • 一个安装了支持通过 SSH 隧道进行 VNC 连接的 VNC 客户端的本地计算机。
    • 在 Windows 上,您可以使用 TightVNC、RealVNC 或 UltraVNC。
    • 在 macOS 上,您可以使用内置的屏幕共享程序,或者使用跨平台应用程序如 RealVNC。
    • 在 Linux 上,您可以选择多种选项,包括 vinagrekrdc、RealVNC 或 TightVNC。

步骤 1 — 安装桌面环境和 VNC 服务器

默认情况下,Debian 9 服务器不会安装图形桌面环境或 VNC 服务器,因此我们将从安装这些开始。具体来说,我们将安装最新的 Xfce 桌面环境和官方 Debian 仓库中提供的 TightVNC 软件包。

在您的服务器上,更新软件包列表:

sudo apt update

现在在您的服务器上安装 Xfce 桌面环境:

sudo apt install xfce4 xfce4-goodies

在安装过程中,您将被提示从可能的选项列表中选择您的键盘布局。选择适合您语言的选项并按 Enter。安装将继续。

安装完成后,安装 TightVNC 服务器:

sudo apt install tightvncserver

安装完成后,使用 vncserver 命令完成 VNC 服务器的初始配置,设置一个安全密码并创建初始配置文件:

vncserver

您将被提示输入和验证远程访问您的机器的密码:

您需要密码来访问您的桌面。
密码:
验证:

密码必须在六到八个字符之间。超过 8 个字符的密码将被自动截断。

验证密码后,您将有选项创建一个只读密码。使用只读密码登录的用户将无法使用鼠标或键盘控制 VNC 实例。如果您想要使用 VNC 服务器向其他人演示某些内容,这是一个有用的选项,但不是必需的。

然后,该过程将创建必要的默认配置文件和服务器的连接信息:

您想输入只读密码吗(y/n)? n
xauth:  文件 /home/sammy/.Xauthority 不存在

新的 'X' 桌面是 your_hostname:1

正在创建默认启动脚本 /home/sammy/.vnc/xstartup
正在启动 /home/sammy/.vnc/xstartup 中指定的应用程序
日志文件是 /home/sammy/.vnc/your_hostname:1.log

现在让我们配置 VNC 服务器。

步骤 2 — 配置 VNC 服务器

VNC 服务器需要知道在启动时要执行哪些命令。具体来说,VNC 需要知道它应该连接到哪个图形桌面。

这些命令位于称为 .vnc 文件夹下的 xstartup 配置文件中。当您在上一步中运行 vncserver 时,启动脚本就已经创建了,但我们将创建自己的启动脚本来启动 Xfce 桌面。

当 VNC 首次设置时,它会在端口 5901 上启动一个默认服务器实例。这个端口称为 显示端口,VNC 将其称为 :1。VNC 可以在其他显示端口上启动多个实例,如 :2:3 等。

因为我们将要更改 VNC 服务器的配置方式,首先使用以下命令停止在端口 5901 上运行的 VNC 服务器实例:

vncserver -kill :1

输出应该如下所示,尽管您将看到不同的 PID:

正在终止 Xtightvnc 进程 ID 17648

在修改 xstartup 文件之前,先备份原始文件:

mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

现在创建一个新的 xstartup 文件并在文本编辑器中打开它:

nano ~/.vnc/xstartup

该文件中的命令在每次启动或重新启动 VNC 服务器时都会自动执行。我们需要让 VNC 在我们的桌面环境未启动时启动它。将以下命令添加到文件中:

[secondary_label ~/.vnc/xstartup]

```bash
#!/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_hostname:1

Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/your_hostname:1.log

配置完成后,让我们从本地机器连接到服务器。

步骤 3 —— 安全连接 VNC 桌面

VNC 本身在连接时不使用安全协议。我们将使用 SSH 隧道来安全地连接到我们的服务器,然后告诉我们的 VNC 客户端使用该隧道而不是直接连接。

在本地计算机上创建一个安全地转发到 VNC 的 localhost 连接的 SSH 连接。您可以在 Linux 或 macOS 上通过终端使用以下命令来完成:

ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip

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

记得用您服务器的 sudo 非 root 用户名和 IP 地址替换 sammyyour_server_ip

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

一旦隧道运行起来,使用 VNC 客户端连接到 localhost:5901。您将被提示使用您在步骤 1 中设置的密码进行身份验证。

连接成功后,您将看到默认的 Xfce 桌面。

!VNC connection to Debian 9 server选择 Use default config 以快速配置您的桌面。

您可以通过文件管理器或命令行访问主目录中的文件,如下所示:

!Files via VNC connection to Debian 9

在本地机器上,在终端中按下 CTRL+C 来停止 SSH 隧道并返回到提示符。这也会断开您的 VNC 会话。

接下来让我们将 VNC 服务器设置为一个服务。

步骤 4 —— 将 VNC 作为系统服务运行

接下来,我们将设置 VNC 服务器作为一个 systemd 服务,这样我们就可以像任何其他服务一样启动、停止和重新启动它。这也将确保 VNC 在服务器重新启动时启动。

首先,使用您喜欢的文本编辑器创建一个名为 /etc/systemd/system/vncserver@.service 的新单元文件:

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

名称末尾的 @ 符号将允许我们传递一个参数,我们可以在服务配置中使用这个参数。我们将使用这个参数来指定我们管理服务时要使用的 VNC 显示端口。

向文件中添加以下行。确保更改 UserGroupWorkingDirectory 的值,以及 PIDFILE 值中的用户名,以匹配您的用户名:

[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target

[Service]
Type=forking
User=sammy
Group=sammy
WorkingDirectory=/home/sammy

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

ExecStartPre 命令会在 VNC 已经运行时停止它。ExecStart 命令会启动 VNC 并将颜色深度设置为 24 位色,分辨率为 1280x800。您也可以修改这些启动选项以满足您的需求。

保存并关闭文件。

接下来,让系统知道新的单元文件。

sudo systemctl daemon-reload

启用单元文件。

sudo systemctl enable vncserver@1.service

@ 符号后面的 1 表示服务应该出现在哪个显示号上,这里是默认的 :1,就像在步骤 2 中讨论的那样。

如果当前实例的 VNC 服务器仍在运行,请停止它。

vncserver -kill :1

然后像启动任何其他 systemd 服务一样启动它。

sudo systemctl start vncserver@1

您可以使用以下命令验证它是否已启动:

sudo systemctl status vncserver@1

如果它正确启动,输出应该如下所示:

● vncserver@1.service - Start TightVNC server at startup
   Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2018-09-05 16:47:40 UTC; 3s ago
  Process: 4977 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS)
  Process: 4971 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=0/SUCCESS)
 Main PID: 4987 (Xtightvnc)

...

在重新启动机器时,您的 VNC 服务器现在将可用。

再次启动您的 SSH 隧道:

ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip

然后使用您的 VNC 客户端软件创建一个新连接到 localhost:5901 来连接到您的机器。

结论

您现在已经在您的 Debian 9 服务器上运行了一个安全的 VNC 服务器。现在您将能够使用易于使用和熟悉的图形界面来管理您的文件、软件和设置,并且能够远程运行图形软件,比如网页浏览器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/785106.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

生物素化果胶粒子包裹药物阿霉素;DOX/Bio-PEC

生物素化果胶粒子包裹药物阿霉素(DOX/Bio-PEC)是一种新型的药物载体系统,结合了生物素和果胶多糖的优势,旨在提高药物的靶向性和控释性能。以下是对该系统的详细解析: 一、生物素化果胶粒子的制备 原理与步骤&#xff…

独立开发者系列(22)——API调试工具apifox的使用

接口的逻辑已经实现,需要对外发布接口,而发布接口的时候,我们需要能自己简单调试接口。当然,其实自己也可以写简单的代码调试自己的接口,因为其实就是简单的request请求或者curl库读取,调整请求方式get或者…

甄选范文“论区块链技术及应用”,软考高级论文,系统架构设计师论文

论文真题 区块链作为一种分布式记账技术,目前已经被应用到了资产管理、物联网、医疗管理、政务监管等多个领域。从网络层面来讲,区块链是一个对等网络(Peer to Peer, P2P),网络中的节点地位对等,每个节点都保存完整的账本数据,系统的运行不依赖中心化节点,因此避免了中…

MATLAB基础应用精讲-【数模应用】分层聚类(附python代码实现)

目录 前言 知识储备 层次聚类 1. 算法解读: 2. 步骤和细节: 3. 举例: 4. 算法评价: 5. 算法的变体: 算法原理 基本思想 分层聚类网络的原理 分层聚类网络的优势 分层聚类网络的应用领域 SPSSAU 分层聚类案例 1、背景 2、理论 3、操作 4、SPSSAU输出结果…

Johnson Counter

目录 描述 输入描述: 输出描述: 参考代码 描述 请用Verilog实现4位约翰逊计数器(扭环形计数器),计数器的循环状态如下。 电路的接口如下图所示。 输入描述: input clk , input …

[氮化镓]Kevin J. Chen组新作—肖特基p-GaN HEMTs正栅ESD机理研究

这篇文章是发表在《IEEE Electron Device Letters》上的一篇关于Schottky型p-GaN栅极高电子迁移率晶体管(HEMTs)的正向栅极静电放电(ESD)机理研究的论文。文章由Jiahui Sun等人撰写,使用了基于碳化硅(SiC&a…

设计模式探索:观察者模式

1. 观察者模式 1.1 什么是观察者模式 观察者模式用于建立一种对象与对象之间的依赖关系,当一个对象发生改变时将自动通知其他对象,其他对象会相应地作出反应。 在观察者模式中有如下角色: Subject(抽象主题/被观察者&#xf…

第11章 规划过程组(二)(11.10制订进度计划)

第11章 规划过程组(二)11.10制订进度计划,在第三版教材第395~397页;文字图片音频方式 第一个知识点:定义及作用 分析活动顺序、持续时间、资源需求和进度制约因素,创建项目进度模型,从而落实项目…

六、数据可视化—Wordcloud词云(爬虫及数据可视化)

六、数据可视化—Wordcloud词云(爬虫及数据可视化) 也是一个应用程序 http://amueller.github.io/word_cloud/ Wordcloud词云,在一些知乎,论坛等有这样一些东西,要么做封面,要么做讲解,进行分析…

Java并发/多线程CompleteableFuture详解

目录 CompleteableFuture 创建 获得结果的方法 辅助方法 allOf和anyOf的区别 CompletableFuture 里大约有五十种方法,但是可以进行归类: 变换类 thenApply 消费类 thenAccept 执行操作类 thenRun thenApply/thenAccept/thenRun 结合转化类 thenCombine 结…

浅析Nginx技术:开源高性能Web服务器与反向代理

什么是Nginx? Nginx是一款轻量级、高性能的HTTP和反向代理服务器,也可以用作邮件代理服务器。它最初由俄罗斯的程序员Igor Sysoev在2004年开发,并于2004年首次公开发布。Nginx的主要优势在于其非阻塞的事件驱动架构,能够处理大量并…

python-24-零基础自学python while循环+交互+数据的存储

学习内容:《python编程:从入门到实践》第二版 知识点: 文件处理 with open()while 练习内容:10章练习题10-3、10-4、10-5 练习10-3:访客 编写一个程序,提示用户输入名字。用户做…

北森锐途人才竞聘盘点管理测评:高管领导力六大评判标准深度解析万达商管中国绿发等

北森锐途人才管理测评:高管领导力评判标准深度解析 在企业高管的盘点与竞聘测评领域,众多管理人才面临评估自身领导力的挑战。面对能力卓越、职级显赫的同僚,许多管理者感到缺乏一套权威且专业的评价体系。然而,无论是天赋异禀的领…

【回溯 - 1】46. 全排列

46. 全排列 难度:中等 力扣地址:https://leetcode.cn/problems/permutations/description/ 问题描述 给定一个 不含重复数字 的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nu…

ICMP隧道

后台私信找我获取工具 目录 ICMP隧道作用 ICMP隧道转发TCP上线MSF 开启服务端 生成后门木马 msf开启监听 开启客户端icmp隧道 执行后门木马,本地上线 ICMP隧道转发SOCKS上线MSF 开启服务端 生成后门木马 msf开启监听 开启客户端icmp隧道 ​执行后…

经常用借呗和花呗对征信有影响吗?

说起支付宝里的花呗和借呗,大伙儿肯定都不陌生,它们俩就像是支付宝里的信用贷款双胞胎,名字相近,性格却大相径庭。现在,这俩兄弟都乖乖地接入了央行的征信大家庭,你的每一次使用,都会被记录得清…

老师怎么快速发布成绩?

期末考试的钟声刚刚敲响,成绩单的发放却成了老师们的一大难题。每当期末成绩揭晓,老师们便要开始一项繁琐的任务——将每一份成绩单逐一私信给家长。这不仅耗费了大量的时间和精力,也让本就忙碌的期末工作变得更加繁重。然而,随着…

生产力工具|Endnote X9如何自动更新文件信息

一、以EndNote X9.2版本为例,打开EndNote文献管理软件。 二、在菜单栏找到“Edit→Preferences...”,点击打开,弹出一个“EndNote Preferences”窗口。 三、进行设置 在打开的窗口左侧选择“PDF Handing”,右边会出现自动导入文献…

SwiftUI知识点(二)

Animation import SwiftUIstruct AnimationBootcamp: View {State var isAnimation: Bool falsevar body: some View {VStack{Button("Button"){withAnimation(Animation.default//重复//autoreverses: true:A-B-A-B//false: A-B,A-B.repeat…

[图解]SysML和EA建模住宅安全系统-13-时间图

1 00:00:00,480 --> 00:00:02,280 首先,我们来看,图画在哪里 2 00:00:02,290 --> 00:00:04,380 这个图 3 00:00:04,390 --> 00:00:06,180 你看,它是描述,刚才讲的 4 00:00:06,190 --> 00:00:09,010 描述这个活动 …