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

介绍

虚拟网络计算,或VNC,是一个连接系统,允许您使用键盘和鼠标在远程服务器上与图形桌面环境互动,它有助于用户尚未熟悉命令行管理文件,软件和远程服务器上的设置。

在本指南中,您将在 Debian 10 服务器上设置 VNC 服务器,并通过 SSH 隧道安全连接到它,您将使用 TightVNC,一个快速而轻量级的远程控制包。

前提条件

要遵循这个教程,你需要:

一个 Debian 10 服务器是根据 Debian 10 初始服务器安装指南设置的,包括具有sudo访问和防火墙的非根用户

  • 一个支持 SSH 隧道上的 VNC 连接的本地计算机

一旦你已经准备好了,你可以继续到第一步。

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

默认情况下,Debian 10 服务器不配备图形桌面环境或安装 VNC 服务器,所以先安装这些服务器,具体来说,安装最新 Xfce 桌面环境和 TightVNC 包,可在官方 Debian 存储库中使用。

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

1sudo apt update

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

1sudo apt install xfce4 xfce4-goodies

在安装过程中,您将被要求从可能的选项列表中选择键盘布局. 选择适合您的语言的语言,并按下Enter

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

1sudo apt install tightvncserver

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

1vncserver

接下来会有一个提示输入并验证密码以远程访问您的机器:

1[secondary_label Output]
2You will require a password to access your desktops.
3
4Password:
5Verify:

密码必须长6至8个字符,超过8个字符的密码将自动缩短。

一旦您验证了密码,您可以选择创建仅查看密码。使用仅查看密码登录的用户将无法使用鼠标或键盘控制VNC实例。

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

1[secondary_label Output]
2Would you like to enter a view-only password (y/n)? n
3xauth:  file /home/sammy/.Xauthority does not exist
4
5New 'X' desktop is your_hostname:1
6
7Creating default startup script /home/sammy/.vnc/xstartup
8Starting applications specified in /home/sammy/.vnc/xstartup
9Log file is /home/sammy/.vnc/your_hostname:1.log

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

步骤 2 – 配置 VNC 服务器

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

这些命令位于您的主目录下面的.vnc文件夹中,一个名为xstartup的配置文件中,在上一个步骤中运行vncserver命令时创建了启动脚本,但您将创建自己的 Xfce 桌面。

当 VNC 首次设置时,它会在端口 5901 上启动默认服务器实例.该端口被称为 display port,并且由 VNC 称为 :1. VNC 可以在其他显示端口上启动多个实例,如 :2:3 等。

由于您将更改 VNC 服务器的配置方式,所以先用以下命令停止在端口 5901 上运行的 VNC 服务器实例:

1vncserver -kill :1

以下是对您的服务器环境特定的 PID 输出:

1[secondary_label Output]
2Killing Xtightvnc process ID 17648

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

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

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

1nano ~/.vnc/xstartup

此文件中的命令每次启动或重新启动 VNC 服务器时都会自动执行. 如果尚未启动,则需要 VNC 来启动桌面环境。

1[label ~/.vnc/xstartup]
2#!/bin/bash
3xrdb $HOME/.Xresources
4startxfce4 &

以下是每个行所做的简要概述:

  • #!/bin/bash:第一个行是 shebang。在 *nix 平台上可执行的简单文本文件中,一个 shebang 告诉系统将该文件传输给执行的解释器。在这种情况下,您将文件传输给 Bash 解释器。这将允许每个连续的行以命令执行
  • xrdb $HOME/.Xresources:这个命令告诉 VNC 的 GUI 框架读取用户的 .Xresources' 文件。 .Xresources是用户可以对图形桌面、终端颜色、课程主题和字体渲染等特定设置进行更改的地方。 _*startxfce4&`: 这个命令告诉服务器启动 Xf

当你完成时,保存并退出编辑器. 如果你使用nano,你这样做是通过按CTRL+X,然后Y,然后ENTER

为了确保 VNC 服务器能够正确使用这个新的启动文件,您需要使其可执行:

1sudo chmod +x ~/.vnc/xstartup

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

1vncserver

结果将类似于以下:

1[secondary_label Output]
2New 'X' desktop is your_hostname:1
3
4Starting applications specified in /home/sammy/.vnc/xstartup
5Log file is /home/sammy/.vnc/your_hostname:1.log

有了配置,您已经准备好从本地机器连接到VNC服务器。

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

要安全连接,您将使用 SSH 隧道连接到您的服务器,然后告诉 VNC 客户端使用该隧道,而不是直接连接。

在本地计算机上创建一个 SSH 连接,可安全地向 VNC 的本地主机连接。您可以通过 Linux 或 macOS 的终端使用以下命令进行此操作. 请记住,用非根用户名和服务器的 IP 地址代替sammyyour_server_ip:

1[environment local]
2ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip

请注意,在您在本地机器上在终端中运行此命令后,没有返回输出,您将需要使用VNC客户端来查看图形界面。

以下是这个ssh命令的选项是什么意思:

在这种情况下,您将远程连接的端口5901绑定到本地计算机的端口5901。 *-C开关允许压缩,以帮助最大限度地减少资源消耗并加速事情 *-N开关告诉ssh您不想执行远程命令 *-l开关指定远程登录名称

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

Right-click on top bar to reveal Change Settings option

在 PuTTY 重组窗口左侧的树菜单中找到 连接分支。 扩展 SSH分支,然后单击 隧道。 在控制 SSH 端口转发**的 **选项屏幕上,输入5901源端口本地住宿:5901目的地如下:

Adding port forwarding information into PuTTy

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

一旦隧道运行,请使用VNC客户端连接到‘localhost:5901’,您将被要求使用您在 Step 1中设置的密码进行身份验证。

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

The default Xfce graphical interface for the VNC connection to your Debian 10 server

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

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

Files via VNC connection to Debian 10

在本地计算机上,在终端中按CTRL+C,停止 SSH 隧道,然后返回提示。

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

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

接下来,您将将 VNC 服务器设置为 systemd 服务,您可以根据需要启动、停止和重新启动它,就像任何其他服务一样。

首先,使用您最喜欢的文本编辑器创建一个名为 /etc/systemd/system/[email protected] 的新单元文件:

1sudo nano /etc/systemd/system/[email protected]

名称末尾的@符号将允许您通过在服务配置中使用的参数,您将使用此符号来指定您想要在管理服务时使用的VNC显示端口。

请确保更改 用户, , WorkingDirectory和用户名值中的 PIDFILE值以匹配您的用户名:

 1[label /etc/systemd/system/[email protected] ]
 2[Unit]
 3Description=Start TightVNC server at startup
 4After=syslog.target network.target
 5
 6[Service]
 7Type=forking
 8User=sammy
 9Group=sammy
10WorkingDirectory=/home/sammy
11
12PIDFile=/home/sammy/.vnc/%H:%i.pid
13ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
14ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :%i
15ExecStop=/usr/bin/vncserver -kill :%i
16
17[Install]
18WantedBy=multi-user.target

ExecStartPre命令会停止VNC,如果它已经运行了,ExecStart命令会启动VNC,并将颜色深度设置为24位颜色,分辨率为1280x800。

保存并关闭文件,当你完成。

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

1sudo systemctl daemon-reload

然后,启用单元文件:

1sudo systemctl enable [email protected]

@符号后面的1表示该服务应该显示的显示号码,在这种情况下,如在步骤2中讨论的那样,默认的:1

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

1vncserver -kill :1

然后开始它,就像你开始任何其他系统d 服务一样。

1sudo systemctl start vncserver@1

您可以通过以下命令验证它是否开始:

1sudo systemctl status vncserver@1

如果它正确启动,输出将类似于以下:

1[secondary_label Output]
2 vncserver@1.service - Start TightVNC server at startup
3Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled)
4Active: active (running) since Fri 2022-08-19 16:21:36 UTC; 5s ago
5Process: 24469 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2)
6Process: 24474 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :1 (code=exited, status=0/SUCCESS)
7Main PID: 24482 (Xtightvnc)
8. . .

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

重新启动您的 SSH 隧道:

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

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

结论

您现在有安全的 VNC 服务器在您的 Debian 10 服务器上运行,您现在可以通过用户友好且熟悉的图形界面来管理您的文件、软件和设置,您也可以远程运行图形软件,如 Web 浏览器。

Published At
Categories with 技术
comments powered by Disqus