Debian 11安装配置VNC完整教程:2023年详细步骤指南
引言
Virtual Network Computing(VNC)是一种连接系统,允许您使用键盘和鼠标与远程服务器上的图形桌面环境进行交互。它帮助那些对命令行不太熟悉的用户管理远程服务器上的文件、软件和设置。
在本指南中,您将在Debian 11服务器上使用TightVNC设置一个VNC服务器,并通过SSH隧道安全地连接到它。然后,您将在本地计算机上使用一个VNC客户端程序通过图形桌面环境与服务器进行交互。
先决条件
按照本教程需要准备以下材料:
- 一台按照Debian 11初始服务器设置指南设置的服务器,包括一个具有sudo访问权限的非root用户和防火墙。
- 一台安装了VNC客户端的本地计算机,该客户端支持通过SSH隧道进行VNC连接。
在Windows上,您可以使用TightVNC、RealVNC或UltraVNC。
在macOS上,您可以使用内置的屏幕共享程序,或者使用像RealVNC这样的跨平台应用程序。
在Linux上,您可以选择多种选项,包括vinagre、krdc、RealVNC或TightVNC。
一旦您把所有事情准备好,您可以继续进行第一步。
第一步 – 安装桌面环境和VNC服务器
默认情况下,Debian 11服务器不带有图形化桌面环境或VNC服务器安装,所以您需要开始安装它们。
当选择VNC服务器和桌面环境时,您有很多选择。在本教程中,您将安装最新的Xfce桌面环境和官方Ubuntu存储库提供的TightVNC软件包。Xfce和TightVNC都以轻巧和快速闻名,这将有助于确保即使在较慢的互联网连接上,VNC连接也能流畅稳定。
在使用SSH连接到您的服务器后,请更新您的软件包列表。
- sudo apt update
现在在您的服务器上安装Xfce桌面环境,同时安装xfce4-goodies软件包。
- sudo apt install xfce4 xfce4-goodies
在安装过程中,可能会提示您选择Xfce的默认显示管理器。显示管理器是一个程序,它允许您通过图形界面选择并登录到桌面环境。当您使用VNC客户端连接时,您只会使用Xfce,并且在这些Xfce会话中,您已经作为非root的Debian用户登录。因此,在本教程中,您选择的显示管理器并不重要。请选择其中一个并按Enter键。
一旦安装完成,请安装TightVNC服务器。
- sudo apt install tightvncserver
接下来,安装dbus-x11依赖项以确保与您的VNC服务器建立适当的连接。
- sudo apt install dbus-x11
在安装完成后,要完成VNC服务器的初始配置,请使用vncserver命令设置安全密码并创建初始配置文件。
- vncserver
接下来将出现一个提示,要求输入和验证远程访问您的机器所需的密码。
输出:您将需要一个密码来访问您的桌面。
密码:
验证:
密码必须由六到八个字符组成。超过八个字符的密码会被自动截断。
一旦您验证了密码,您有选择创建一个只读密码的选项。使用只读密码登录的用户将无法通过鼠标或键盘来控制VNC实例。如果您想使用VNC服务器向他人演示某个内容,这是一个有帮助的选项,但并非必需。
然后,该过程会为服务器创建必要的默认配置文件和连接信息。
输出:您是否要输入只读密码(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服务器实例:
- 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,然后ENTER键来退出编辑器。
为确保VNC服务器能够正确使用这个新启动文件,您需要将其设置为可执行状态。
- sudo chmod +x ~/.vnc/xstartup
现在重新启动VNC服务器。
- vncserver
最终的输出将类似于以下内容:
新的 'X' 桌面是 your_hostname:1
正在启动 /home/sammy/.vnc/xstartup 中指定的应用程序
日志文件是 /home/sammy/.vnc/your_hostname:1.log
在设置完成后,您可以准备从本地计算机连接到VNC服务器。
第三步 – 安全连接VNC桌面
VNC本身在连接时不使用安全协议。为了安全连接,您可以使用SSH隧道连接到服务器,然后告诉VNC客户端使用该隧道而不是直接连接。
在您的本地计算机上创建一个SSH连接,安全地将其转发到VNC的localhost连接。您可以通过Linux或macOS的终端使用以下命令来完成此操作。记得将”sammy”和”your_server_ip”替换为您的非root用户名和服务器的IP地址。
- ssh -L 5901:127.0.0.1:5901 -C -N -l sammy your_server_ip
请注意,在您在本地机器的终端上运行此命令后,不会返回任何输出。您需要使用VNC客户端来查看图形界面。
这个ssh命令的选项含义如下:
- -L开关指定端口绑定。在本例中,您将远程连接的端口5901绑定到本地机器上的端口5901。
- -C开关启用压缩以帮助最小化资源消耗并加快速度。
- -N开关告诉ssh您不想执行远程命令。
- -l开关指定远程登录名。确保将sammy和your_server_ip替换为您的非root用户名和服务器的IP地址。
如果您正在使用PuTTY连接到服务器,您可以通过右键点击终端窗口的顶部栏,并选择”更改设置”选项来创建一个SSH隧道。
鼠标右击顶部栏以显示”更改设置”选项。
在PuTTY重新配置窗口的左侧树形菜单中找到”连接”分支。展开SSH分支,然后点击”Tunnels”。在控制SSH端口转发的选项屏幕上,将源端口设置为5901,目的地设置为localhost:5901,如下所示。
然后单击添加按钮,再单击应用按钮来实施隧道。
一旦隧道运行起来,使用VNC客户端连接到localhost:5901。您会被提示使用您在第一步中设置的密码进行身份验证。
一旦连接成功,Xfce桌面将默认显示如下:
选择使用默认配置来配置您的桌面。
您可以通过文件管理器或命令行访问您的主目录中的文件,如以下所示:
使用VNC连接到Debian 11,通过VNC客户端搜索文件。
在您的本地计算机上,按下终端中的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=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。您还可以根据需要修改这些启动选项。
当您完成后保存并关闭文件。
接下来,让系统意识到新的单元文件。
然后,启用该单元文件。
- 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 - 启动时启动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 sammy your_server_ip
然后使用您的VNC客户端软件,建立到本地主机的连接,端口号为5901,以连接到您的设备。
结论
现在您在Debian 11服务器上已经安装并运行了一个安全的VNC服务器。现在您可以通过一个用户友好且熟悉的图形界面来管理您的文件、软件和设置。您还可以远程运行图形软件,如网络浏览器。