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

引言

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

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

先决条件

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

  • One Debian 10 server set up by following the Debian 10 initial server setup guide, including a non-root user with sudo access and a firewall.
  • A local computer with a VNC client installed that supports VNC connections over SSH tunnels.On Windows, you can use TightVNC, RealVNC, or UltraVNC.
    On macOS, you can use the built-in Screen Sharing program, or can use a cross-platform app like RealVNC.
    On Linux, you can choose from many options, including vinagre, krdc, RealVNC, or 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

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

Output
You will require a password to access your desktops. Password: Verify:

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

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

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

Output
Would you like to enter a view-only password (y/n)? n xauth: file /home/User01/.Xauthority does not exist New 'X' desktop is your_hostname:1 Creating default startup script /home/User01/.vnc/xstartup Starting applications specified in /home/User01/.vnc/xstartup Log file is /home/User01/.vnc/your_hostname:1.log

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

第二步 – 配置VNC服务器

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

这些命令存放在你主目录下的.vnc文件夹里的一个名为xstartup的配置文件中。在上一步中运行vncserver命令时,启动脚本已经创建完成,但你需要创建自己的脚本来启动Xfce桌面。

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

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

vncserver -kill  :1

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


Output
Killing Xtightvnc process 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: The first line is a shebang. In executable plain-text files on *nix platforms, a shebang tells the system what interpreter to pass that file to for execution. In this case, you’re passing the file to the Bash interpreter. This will allow each successive line to be executed as commands, in order.
  • xrdb $HOME/.Xresources: This command tells VNC’s GUI framework to read the user’s .Xresources file. .Xresources is where a user can make changes to certain settings for the graphical desktop, like terminal colors, cursor themes, and font rendering.
  • startxfce4 &: This command tells the server to launch Xfce. This is where you will find all the graphical software that you need to comfortably manage your server.

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

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

sudo chmod +x ~/.vnc/xstartup

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

  1. vncserver

输出将类似于以下内容。


Output
New 'X' desktop is your_hostname:1 Starting applications specified in /home/User01/.vnc/xstartup Log file is /home/User01/.vnc/your_hostname:1.log

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

第三步-安全连接VNC桌面

为实现安全连接,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命令选项的意思:

  • The -L switch specifies the port bindings. In this case you’re binding port 5901 of the remote connection to port 5901 on your local machine.
  • The -C switch enables compression to help minimize resource consumption and speed things up.
  • The -N switch tells ssh that you don’t want to execute a remote command.
  • The -l switch specifies the remote login name.

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

Right-click on top bar to reveal Change Settings option

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

Adding port forwarding information into PuTTy

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

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

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

![您的Debian 10服务器上用于VNC连接的Xfce图形界面的默认设置](https://assets.digitalocean.com/articles/vnc_debian10/default-xfce.png “第一次通过VNC连接访问时的Xfce桌面环境。”)

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

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

Files via VNC connection to 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=Start TightVNC server at startup
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

如果开始正确,输出将类似于以下内容:

Output
● vncserver@1.service - Start TightVNC server at startup 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 james your_server_ip

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

结论

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

发表回复 0

Your email address will not be published. Required fields are marked *