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

引言

Virtual Network Computing(VNC)是一种连接系统,允许您使用键盘和鼠标与远程服务器上的图形桌面环境进行交互。它帮助那些对命令行不太熟悉的用户管理远程服务器上的文件、软件和设置。

在本指南中,您将在Debian 11服务器上使用TightVNC设置一个VNC服务器,并通过SSH隧道安全地连接到它。然后,您将在本地计算机上使用一个VNC客户端程序通过图形桌面环境与服务器进行交互。

先决条件

按照本教程需要准备以下材料:

  • One Debian 11 server set up by following the Debian 11 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 11服务器不带有图形化桌面环境或VNC服务器安装,所以您需要开始安装它们。

当选择VNC服务器和桌面环境时,你有很多选择。在本教程中,你将安装最新的Xfce桌面环境和官方Ubuntu存储库提供的TightVNC软件包。Xfce和TightVNC都以轻巧和快速闻名,这将有助于确保即使在较慢的互联网连接上,VNC连接也能流畅稳定。

在使用SSH连接到您的服务器后,请更新您的软件包列表。

  1. sudo apt update

现在在你的服务器上安装Xfce桌面环境,同时安装xfce4-goodies软件包。

  1. sudo apt install xfce4 xfce4-goodies

在安装过程中,可能会提示您选择Xfce的默认显示管理器。显示管理器是一个程序,它允许您通过图形界面选择并登录到桌面环境。当您使用VNC客户端连接时,您只会使用Xfce,并且在这些Xfce会话中,您已经作为非root的Debian用户登录。因此,在本教程中,您选择的显示管理器并不重要。请选择其中一个并按Enter键。

一旦安装完成,请安装TightVNC服务器。

  1. sudo apt install tightvncserver

接下来,安装dbus-x11依赖项以确保与您的VNC服务器建立适当的连接。

  1. sudo apt install dbus-x11

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

  1. 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/sammy/.Xauthority does not exist New 'X' desktop is your_hostname:1 Creating default startup script /home/sammy/.vnc/xstartup Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log

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

步骤二 – 配置VNC服务器

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

这些命令位于家目录下的.vnc文件夹中名为xstartup的配置文件中。在上一步中运行vncserver命令时,启动脚本就已经创建好了,但是你将会自己创建一个来启动Xfce桌面。

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

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

  1. vncserver -kill :1

以下是与您的服务器环境特定的PID相关的输出结果:

Output
Killing Xtightvnc process ID 17648

在修改xstartup文件之前,请备份原文件。

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

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

  1. 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,然后ENTER键来退出编辑器。

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

  1. sudo chmod +x ~/.vnc/xstartup

现在重新启动VNC服务器。

  1. vncserver

最终的输出将类似于以下内容:

Output
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

在设置完成后,你可以准备从本地计算机连接到VNC服务器。

第三步-安全连接VNC桌面。

VNC本身在连接时不使用安全协议。为了安全连接,您可以使用SSH隧道连接到服务器,然后告诉VNC客户端使用该隧道而不是直接连接。

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

  1. ssh -L 5901:127.0.0.1:5901 -C -N -l sammy 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. Make sure to replace sammy and your_server_ip with the name of your non-root user and your server’s IP address.

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

鼠标右击顶部栏以显示“更改设置”选项。

在PuTTY重新配置窗口的左侧树形菜单中找到”连接”分支。展开SSH分支,然后点击”Tunnels”。在控制SSH端口转发的选项屏幕上,将源端口设置为5901,目的地设置为localhost:5901,如下所示。

Adding port forwarding information into PuTTy

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

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

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

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

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

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

使用VNC连接到Debian 11,通过VNC客户端搜索文件。

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

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

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

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

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

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

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

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

/etc/systemd/system/vncserver@.service 的本地语言的同义句:
/vncserver@.service 在 /etc/systemd/system 的路径上。
[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

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

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

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

  1. sudo systemctl daemon-reload

然后,启用该单元文件。

  1. sudo systemctl enable vncserver@1.service

@符号后面的1表示服务应该出现在哪个显示屏上,在这种情况下,默认为:1,正如在步骤2中所讨论的。

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

  1. vncserver -kill :1

然后像启动其他systemd服务一样启动它:

  1. sudo systemctl start vncserver@1

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

  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隧道。

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

然后使用您的VNC客户端软件,建立到本地主机的连接,端口号为5901,以连接到您的设备。

结论

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

发表回复 0

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