Debian 10安装配置VNC完整教程:Linux远程桌面管理指南

引言

虚拟网络计算(Virtual Network Computing,简称VNC)是一种连接系统,可以让你使用键盘和鼠标与远程服务器上的图形化桌面环境进行交互。它帮助那些对命令行操作还不太熟悉的用户管理远程服务器上的文件、软件和设置。

在本指南中,您将在Debian 10服务器上设置VNC服务器,并通过SSH隧道安全连接到它。您将使用TightVNC,一个快速而轻便的远程控制软件包。选择TightVNC可以确保在较慢的互联网连接下VNC连接顺畅稳定。

先决条件

跟随本教程,您需要准备以下物品:

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

一旦你所有的设置完成,你可以开始进行第一步。

第一步 – 安装桌面环境和VNC服务器

默认情况下,Debian 10服务器未安装图形化桌面环境或VNC服务器,所以请先安装它们。具体步骤是,在官方的Debian软件库中安装最新的Xfce图形化桌面环境以及TightVNC软件包。

在你的服务器上,更新软件包列表。

sudo apt update

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

sudo apt install xfce4 xfce4-goodies

在安装过程中,您将被提示从可能的选项列表中选择适合您所使用语言的键盘布局。选择合适的选项后按下回车键,安装将继续进行。

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

sudo apt install tightvncserver

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

vncserver

接下来将提示您输入和验证密码,以远程访问您的设备。

输出
您将需要一个密码来访问您的桌面。
密码:
验证:

密码必须由六到八个字符组成。超过八个字符的密码将被自动截断。

验证密码后,您可以选择创建一个仅供查看的密码。使用仅供查看的密码登录的用户将无法通过鼠标或键盘控制VNC实例。如果您希望使用您的VNC服务器向其他人演示某个内容,这是一个有用的选项,但并非必需。

然后,该过程将为服务器创建所需的默认配置文件和连接信息。

输出
您是否要输入一个仅查看密码(y/n)?n
xauth: 文件 /home/用户名/.Xauthority 不存在
新的 'X' 桌面是 主机名:1
创建默认启动脚本 /home/用户名/.vnc/xstartup
启动 /home/用户名/.vnc/xstartup 中指定的应用程序
日志文件是 /home/用户名/.vnc/主机名:1.log

接下来,将其配置为启动Xfce并通过图形界面访问服务器。

第二步 – 配置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来启动它。请将以下命令添加到文件中:

家目录/.vnc/xstartup可以用以下中文表达:家目录/.vnc/xstartup。

#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

以下是对每行代码的简要概述:

  • #!/bin/bash: 第一行是shebang。在*nix平台上的可执行纯文本文件中,shebang告诉系统将该文件传递给哪个解释器执行。在这种情况下,您将文件传递给Bash解释器。这将允许每个后续行按顺序作为命令执行。
  • xrdb $HOME/.Xresources: 这个命令告诉VNC的GUI框架读取用户的.Xresources文件。.Xresources是用户可以在其中对图形桌面的某些设置进行更改的地方,比如终端颜色、光标主题和字体渲染。
  • startxfce4 &: 这个命令告诉服务器启动Xfce。这是您将找到所有用于舒适管理服务器的图形软件的地方。

当您完成后,保存并退出您的编辑器。如果您使用的是nano,您可以通过按下CTRL+X,然后按Y,最后按回车键来实现。

为确保VNC服务器能够正确使用这个新的启动文件,你需要将其设置为可执行。

sudo chmod +x ~/.vnc/xstartup

现在,重新启动VNC服务器:

vncserver

输出将类似于以下内容。

输出
新的 'X' 桌面是 主机名:1
启动 /home/用户名/.vnc/xstartup 中指定的应用程序
日志文件是 /home/用户名/.vnc/主机名:1.log

有了配置设置好,你就可以从本地机器连接到VNC服务器了。

第三步 – 安全连接VNC桌面

这是文章《如何在Debian 10上安装和配置VNC》的第2部分(共2部分)。

为实现安全连接,VNC本身不使用安全协议。要安全连接,您将使用SSH隧道连接服务器,然后告诉VNC客户端使用该隧道而不是直接连接。

在本地计算机上创建一个SSH连接,安全地将其转发到VNC的本地连接。您可以使用以下命令在Linux或macOS的终端上完成此操作。请记住将User01和your_server_ip替换为您的非root用户名和服务器的IP地址。

  1. ssh -L 5901:127.0.0.1:5901 -C -N -l User01 your_server_ip

请注意,在您在本地计算机的终端上运行此命令后,不会返回任何输出。您需要使用VNC客户端来查看图形界面。

以下是SSH命令选项的含义:

  • -L 开关指定端口绑定。在这种情况下,您将远程连接的5901端口绑定到本地计算机上的5901端口。
  • -C 开关启用压缩,以帮助最小化资源消耗并加快速度。
  • -N 开关告诉SSH您不想执行远程命令。
  • -l 开关指定远程登录名。

如果您正在使用PuTTY连接服务器,您可以通过右键单击终端窗口的顶部栏,然后选择”更改设置…”选项来创建一个SSH隧道。

右键单击顶部栏以显示更改设置选项

在PuTTY重新配置窗口的左侧树形菜单中找到Connection分支。展开SSH分支并点击Tunnels。在控制SSH端口转发的选项屏幕上,输入5901作为源端口,localhost:5901作为目标端口,就像下面这样。

向PuTTY添加端口转发信息

然后点击添加按钮,然后点击应用按钮来实施隧道。

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

一旦连接成功,Xfce 默认的桌面将会显示如下:

第一次通过VNC连接访问时的Xfce桌面环境。

选择使用默认配置来配置您的桌面。

你可以通过文件管理器或命令行访问你的主文件夹中的文件,如下所示。

通过VNC连接到Debian 10的文件

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

接下来,您将将VNC服务器设置为服务。

第四步 – 将VNC作为系统服务运行

接下来,您将把VNC服务器设置为systemd服务。您可以根据需要启动、停止和重新启动它,就像其他服务一样。这也会确保在服务器重新启动时VNC启动。

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

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

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

请将以下行添加到文件中。确保将User、Group、WorkingDirectory的值以及PIDFILE值中的用户名更改为您的用户名:

/etc/systemd/system/vncserver@.service 文件内容如下:

[Unit]
Description=启动时启动TightVNC服务器
After=syslog.target network.target

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

PIDFile=/home/User01/.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

以下为本地化的中文释义,只提供一种选项:

如果VNC已经在运行,ExecStartPre命令将停止VNC。ExecStart命令启动VNC,并将颜色深度设置为24位,并分辨率设置为1280×800。您也可以根据需要修改这些启动选项。

完成后保存并关闭文件。

接下来,让系统意识到新的单元文件。

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服务器
   Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2022-08-19 16:21:36 UTC; 5s ago
   Process: 24469 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2)
   Process: 24474 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :1 (code=exited, status=0/SUCCESS)
   Main PID: 24482 (Xtightvnc)
   . . .

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

重新开始你的SSH隧道。

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

然后使用您的VNC客户端软件,在本地连接到localhost:5901以连接到您的机器。

结论

您现在的Debian 10服务器已经安装并运行了一个安全的VNC服务器。现在,您可以通过用户友好且熟悉的图形界面来管理您的文件、软件和设置。您还可以远程运行图形软件,比如网页浏览器。

bannerAds