跳到主要内容

6. vnc远程桌面

6.1 桌面vino配置VNC服务

VNC分为客户端和服务端,我们首先进行ArmSoM产品上服务端的配置。

6.1.1 打开配置

vnc-connect-setting

6.1.2 使用 MobaXterm 连接 VNC

可以通过MobaXterm的VNC进行链接,需要输入产品实际ip:

vnc-connect-mobaxterm

6.1.3 登录成功

vnc-connect-success

6.2 命令TightVNC配置VNC服务

使用TightVNC建议选择 xfce 轻量级桌面环境,不依赖过多的特效和图形加速。 以下例子使用 Armbian Armsom-cm5-io_bookworm_xfce_desktop

6.2.1 安装 TightVNC Server 和配置 XFCE

安装 TightVNC Server

在终端执行以下命令,安装 TightVNC 服务端:

armsom@armsom-cm5-io:~$ sudo apt update
armsom@armsom-cm5-io:~$ sudo apt install tightvncserver

启动 VNC Server

运行以下命令初始化 VNC 服务:

armsom@armsom-cm5-io:~$ vncserver
  • 第一次启动会提示设置一个访问密码(建议设置为 6~8 位密码)。
  • VNC 服务会分配一个虚拟桌面,比如 :1(对应端口号 5901,即 5900 + 虚拟桌面号)。
  • 你可以通过以下命令查看当前运行的 VNC 会话:
armsom@armsom-cm5-io:~$ ps -ef | grep vnc
armsom 956 1 0 14:43 ? 00:00:00 Xtightvnc :1 -desktop X -auth /home/armsom/.Xauthority -geometry 1920x1080 -depth 24 -rfbwait 120000 -rfbauth /home/armsom/.vnc/passwd -rfbport 5901 -fp /usr/share/fonts/X11/misc/,/usr/share/fonts/X11/Type1/,/usr/share/fonts/X11/75dpi/,/usr/share/fonts/X11/100dpi/ -co /etc/X11/rgb
armsom 1194 1 0 14:43 ? 00:00:00 /bin/sh /home/armsom/.vnc/xstartup
armsom 2361 2019 33 14:46 ttyFIQ0 00:00:00 grep vnc

杀死 VNC 会话

如果需要终止某个会话,例如 :1,运行以下命令:

vncserver -kill :1

4. 配置 VNC 启动 XFCE 桌面

编辑 VNC 的配置文件 ~/.vnc/xstartup

nano ~/.vnc/xstartup

确保文件的最后一行设置为启动 XFCE 桌面环境: startxfce4 &

#!/bin/sh

xrdb "$HOME/.Xresources"
xsetroot -solid grey
#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
# Fix to make GNOME work
export XKL_XMODMAP_DISABLE=1
/etc/X11/Xsession
startxfce4 &
注意:

如果文件没有执行权限,请添加可执行权限:
chmod +x ~/.vnc/xstartup

重新启动 VNC Server

执行以下命令重新启动 VNC 服务:

vncserver

6.2.2 使用 MobaXterm 连接 VNC

可以通过MobaXterm的VNC进行链接,需要输入产品实际ip:

vnc-connect-mobaxterm

注意事项
  1. 不能同时登录桌面环境
    • 如果服务器端已经通过物理方式登录桌面环境,VNC 服务端可能无法正常启动。
    • 解决方案:登出服务器的物理桌面,只运行 VNC 虚拟桌面。
  2. 防火墙配置 确保防火墙允许 5901 端口访问(根据 VNC 会话号调整端口)。例如:
    sudo ufw allow 5901
  3. 系统资源占用
    • 虚拟桌面会消耗服务器的 CPU 和内存资源,建议按需启动和管理多个 VNC 会话。

6.2.3 创建 TightVNC 的 systemd 服务

要使 TightVNC Server 在系统启动时自动运行,可以通过创建 systemd 服务 来实现。以下是完整的操作步骤:

创建 TightVNC 的 systemd 服务

在终端中,使用 sudo 权限创建一个新的服务文件:

sudo nano /etc/systemd/system/tightvncserver.service

添加服务配置

将以下内容粘贴到 tightvncserver.service 文件中:

[Unit]
Description=TightVNC Server

[Service]
Type=forking
User=armsom
Environment=DISPLAY=:1
PIDFile=/home/armsom/.vnc/%H:1.pid
ExecStart=/usr/bin/vncserver :1 -geometry 1920x1080 -depth 24
ExecStop=/usr/bin/vncserver -kill :1
Restart=on-failure

[Install]
WantedBy=multi-user.target

说明:

  • User= 替换为你的用户名。
  • ExecStart=ExecStop= 分别是启动和停止 VNC 服务的命令。
  • :1 表示第一个 VNC 虚拟桌面,默认端口为 5901
  • -geometry 1920x1080 设置桌面分辨率,可以根据需要修改。
  • -depth 24 设置颜色深度。
  • PIDFile 路径中的用户名也要替换为你的用户名。

重新加载 systemd 并启用服务

输入以下命令重新加载 systemd 配置:

sudo systemctl daemon-reload

启用 TightVNC 服务开机自启动:

sudo systemctl enable tightvncserver

立即启动 TightVNC 服务:

sudo systemctl start tightvncserver

4. 验证服务状态

检查 TightVNC 服务是否正常运行:

sudo systemctl status tightvncserver

输出结果中应该显示服务正在运行:

armsom@armsom-cm5-io:~$ sudo systemctl status tightvncserver
● tightvncserver.service - TightVNC Server
Loaded: loaded (/etc/systemd/system/tightvncserver.service; enabled; prese>
Active: active (running) since Tue 2024-12-17 14:56:15 CST; 7min ago

6.2.4 登录成功

vnc-connect-success