温馨提示×

如何在Ubuntu上使用TigerVNC进行远程管理

小樊
44
2025-12-30 15:05:16
栏目: 智能运维

在 Ubuntu 上使用 TigerVNC 进行远程管理的完整步骤

一 环境准备与安装

  • 更新索引并安装桌面与服务器组件(以 Ubuntu 22.04/24.04 为例):
    • 服务器无图形界面时安装桌面(二选一):
      • 完整桌面:sudo apt install ubuntu-desktop
      • 轻量桌面:sudo apt install ubuntu-desktop-minimal
    • 安装 TigerVNC 服务端:sudo apt install tigervnc-standalone-server
  • 设置 VNC 访问密码(非 root 执行):vncpasswd(建议仅设置登录密码,不启用仅查看密码)。

二 配置桌面会话与 VNC 参数

  • 方案 A(推荐,GNOME 与系统会话一致):创建用户级会话环境
    • 写入会话变量:~/.xsessionrc
      • export XAUTHORITY=$HOME/.Xauthority
      • export XDG_CURRENT_DESKTOP=ubuntu:GNOME
      • export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
    • 生成 X.509 证书用于加密(可选但更安全):
      • openssl req -x509 -newkey rsa -days 3650 -nodes -config /usr/lib/ssl/openssl.cnf
        -keyout ~/.vnc/vnc-server-private.pem -out ~/.vnc/vnc-server.pem
        -subj ‘/CN=你的服务器名称’ -addext “subjectAltName=IP:x.x.x.x,IP:y.y.y.y”
    • 写入 VNC 配置:~/.vnc/config
      • session=ubuntu
      • geometry=1600x900
      • depth=24
      • localhost=no
      • X509Cert=/home/你的用户名/.vnc/vnc-server.pem
      • X509Key=/home/你的用户名/.vnc/vnc-server-private.pem
      • SecurityTypes=X509Vnc
    • 说明:新版 TigerVNC 会优先使用系统会话启动器(如 /etc/X11/Xtigervnc-session),通常无需手写 ~/.vnc/xstartup
  • 方案 B(通用,显式启动桌面,适合 Xfce 或 GNOME Flashback)
    • 创建:~/.vnc/xstartup(并 chmod +x)
      • Xfce 示例:
        • #!/bin/sh
        • unset SESSION_MANAGER
        • unset DBUS_SESSION_BUS_ADDRESS
        • exec startxfce4
      • GNOME 示例(Flashback/经典会话):
        • #!/bin/sh
        • unset SESSION_MANAGER
        • unset DBUS_SESSION_BUS_ADDRESS
        • export XKL_XMODMAP_DISABLE=1
        • gnome-session --session=gnome-flashback-metacity --disable-acceleration-check &
        • gnome-panel &
        • gnome-settings-daemon &
        • metacity &
        • nautilus &
    • 注意:文件必须具有可执行权限,否则会话无法启动。

三 启动与自启动

  • 手动启动与验证
    • 启动:vncserver :1 -geometry 1920x1080 -depth 24 -localhost no
    • 查看:vncserver -list(应见显示号 :1,对应端口 5901
    • 停止:vncserver -kill :1
  • 以 systemd 服务实现开机自启(单用户示例)
    • 新建:sudo nano /etc/systemd/system/vncserver@:1.service
      • [Unit]
        • Description=Remote desktop service (VNC)
        • After=syslog.target network.target
      • [Service]
        • Type=forking
        • User=<你的用户名>
        • Environment=HOME=/home/<你的用户名>
        • PIDFile=/home/<你的用户名>/.vnc/%H%i.pid
        • ExecStartPre=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’
        • ExecStart=/usr/bin/vncserver %i -geometry 1920x1080 -localhost no
        • ExecStop=/bin/sh -c ‘/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :’
        • Restart=on-failure
        • RestartSec=5
      • [Install]
        • WantedBy=multi-user.target
    • 启用与启动:
      • sudo systemctl daemon-reload
      • sudo systemctl enable --now vncserver@:1.service
      • sudo systemctl status vncserver@:1.service
  • 多用户映射(可选)
    • 编辑:/etc/tigervnc/vncserver.users
      • 格式::2=user1:3=user2(显示号与端口映射:5900 + 显示号)。

四 防火墙与连接

  • 防火墙放行(示例)
    • UFW:sudo ufw allow 5901/tcp
    • firewalld:sudo firewall-cmd --permanent --add-port=5901/tcp && sudo firewall-cmd --reload
  • 直连地址
    • 客户端输入:服务器IP:5901(对应 :1;若是 :2 则为 5902,以此类推)
  • 通过 SSH 隧道更安全(推荐在公网)
    • 本地端口转发:ssh -L 5901:127.0.0.1:5901 用户名@服务器IP
    • 客户端连接:localhost:1
  • 客户端选择
    • Windows/macOS/Linux 均可使用 TigerVNC ViewerRealVNC Viewer;若使用证书加密,请在客户端指定 CA/证书路径。

五 常见问题与优化

  • 仅本机能连:启动参数需包含 -localhost no;若仍受限,检查云安全组/本机防火墙是否放行对应端口。
  • 黑屏/灰屏或仅面板无桌面:检查 ~/.vnc/xstartup 是否存在且具可执行权限,内容是否匹配所用桌面(GNOME/Xfce);必要时用 vncserver -kill 后重启会话。
  • 端口与显示号:显示号 :n 对应端口 5900+n;用 vncserver -list 确认实际端口与进程。
  • 与物理显示器登录冲突:同一用户通常只能存在一个图形会话(本地或 VNC 其一);服务器场景可设为命令行默认启动:sudo systemctl set-default multi-user.target(需要图形登录时再切换)。
  • 剪贴板自动同步干扰:在 ~/.vnc/config 增加
    • SendPrimary=0
    • SetPrimary=0 然后重启 VNC 会话。
  • 高 DPI 显示模糊(Windows 客户端):在 vncviewer 快捷方式“兼容性”中启用“替代高 DPI 缩放行为”,选择“应用程序”。

0