温馨提示×

ubuntu tigervnc如何启用加密

小樊
38
2025-12-22 19:39:42
栏目: 网络安全

Ubuntu 下 TigerVNC 启用加密的两种可靠方案

  • 方案一(推荐):使用 SSH 隧道 加密,配置简单、通用性强,适合大多数网络环境。
  • 方案二:启用 X.509 TLS 加密,服务端和客户端进行证书校验,适合对安全性要求更高的场景。

方案一 SSH 隧道加密

  • 服务端安装与初始化

    • 安装 TigerVNC 服务器:sudo apt update && sudo apt install tigervnc-standalone-server
    • 切换到目标用户初始化密码:vncserver(设置登录密码;如提示创建只读密码,选 n
    • 如需开机自启,建议创建 systemd 服务,并在启动参数中加入 -localhost(仅本机监听,由 SSH 转发):
      • 示例(/etc/systemd/system/vncserver@.service 的 ExecStart):
        ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i
      • 重新加载并启用:sudo systemctl daemon-reload && sudo systemctl enable --now vncserver@1
  • 客户端连接(SSH 隧道)

    • 建立本地端口转发(将本机 5901 转发到服务器的 5901):
      ssh -L 5901:localhost:5901 -C -N -l 用户名 服务器IP
    • 使用任意 VNC 客户端连接:localhost:1(或 localhost:5901)。
    • 说明:SSH 隧道建立后,VNC 数据经 SSH 加密传输,无需在 VNC 层再启用 SSL/TLS。

方案二 X.509 TLS 加密(证书认证与加密)

  • 准备证书

    • 生成自签名证书(包含服务器 IP 或域名的 SAN,有效期 3650 天):
      mkdir -p ~/.vnc
      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-server.pem 分发给客户端用于校验(放在 TigerVNC Viewer 可识别的目录)。
  • 服务端启用 X509 加密

    • 写入客户端配置(~/.vnc/config):
      session=ubuntu
      geometry=1600x900
      depth=24
      localhost=no
      SecurityTypes=X509Vnc
      X509Cert=/home/你的用户名/.vnc/vnc-server.pem
      X509Key=/home/你的用户名/.vnc/vnc-server-private.pem
    • 说明:TigerVNC 会自动使用 X.509 证书对会话进行加密与服务器身份认证。
  • 客户端连接

    • 使用 TigerVNC Viewer 直接连接:服务器IP:1(或 :5901)。
    • 在 Viewer 的 Security 选项中启用 X509 证书,并指定包含 vnc-server.pem 的目录,即可完成证书校验并建立加密通道。

防火墙与端口说明

  • 使用 SSH 隧道 时:仅允许 SSH 端口 22 对外开放;VNC 端口(如 5901)仅在回环接口监听,由 SSH 转发,更安全。
  • 使用 X.509 TLS 时:需放行 5901/TCP(或相应显示号端口),并确保路由器/云安全组策略允许该端口入站。

常见问题与排查

  • 连接被拒绝或灰屏:确认 VNC 服务已启动(vncserver -list)、端口监听正常(ss -ltnp | grep 590)、以及桌面会话配置正确(如 ~/.vnc/xstartup 或 session=ubuntu)。
  • 证书不被信任:确保客户端使用的是服务器提供的 vnc-server.pem,且证书的 SAN 包含客户端连接的 IP/DNS
  • 版本差异:TigerVNC 1.10.1+ 推荐使用 systemd 管理;若直接运行 vncserver 提示已被 systemd 单元替代,请改用服务方式管理。

0