跳至内容

通过 x11vnc+SSH 进行桌面共享

简介

x11vnc 是一款功能强大的 VNC 程序,它通过使用现有的 X 会话而不是启动新的会话而脱颖而出。此功能使其成为远程支持的绝佳工具,因为它允许您从远处控制用户的屏幕或 X 会话。

本指南将教您如何设置 X11vnc 服务器以及如何远程连接到它。

注意

使用 x11vnc 而不是 SSH 的主要优势之一是它消除了在您的机器上打开任何额外端口的需要,从而最大限度地减少了攻击面。

假设

本指南假设您拥有以下内容

  • Rocky Linux 工作站
  • sudo 权限

设置 VNC 服务器

要捕获您的 X 会话,您必须在您的 Rocky 工作站上安装 x11vnc 服务器。

禁用 Wayland

首先,您需要禁用 Wayland。使用您选择的文本编辑器打开 custom.conf 文件

sudo vim /etc/gdm/custom.conf

取消注释 WaylandEnable=false

# GDM configuration storage

[daemon]
WaylandEnable=false

[security]

[xdmcp]

[chooser]

[debug]
# Uncomment the line below to turn on debugging
#Enable=true

重新启动 gdm 服务

sudo systemctl restart gdm

安装和配置 x11vnc

启用 EPEL 仓库

sudo dnf install epel-release

为 x11vnc 创建密码

x11vnc -storepasswd ~/.x11vnc.pwd

使用您选择的文本编辑器创建一个新文件。您将使用它来创建一个运行 x11vnc 的服务

sudo vim /etc/systemd/system/x11vnc.service

将以下文本复制并粘贴到文件中,然后写入并退出

注意

rfbauth 路径替换为您之前创建的密码文件路径。另外,将 UserGroup 值替换为您打算提供远程支持的用户。

[Unit]
Description=Start x11vnc at startup
After=display-manager.service

[Service]
Type=simple
Environment=DISPLAY=:1
Environment=XAUTHORITY=/run/user/1000/gdm/Xauthority
ExecStart=/usr/bin/x11vnc -auth /var/lib/gdm/.Xauthority -forever -loop -noxdamage -repeat -rfbauth /home/server/.x11vnc.pwd -rfbport 5900 -shared
User=server
Group=server

[Install]
WantedBy=multi-user.target

启用并启动 x11vnc 服务

sudo systemctl enable --now x11vnc.service

从您的 Rocky 工作站连接到 VNC 服务器

安装 EPEL 仓库:

sudo dnf install epel-release

安装 VNC 客户端

安装 TigerVNC。服务器不用,但您将使用客户端

sudo dnf install tigervnc

创建 SSH 隧道

The ssh command in a terminal window

创建一个 SSH 隧道以安全地连接到 VNC 服务器

ssh -L 5900:localhost:5900 REMOTEIP

启动 VNC 查看器

使用以下命令打开您的 VNC 查看器

vncviewer

TigerVNC viewer

通过在 TigerVNC 中输入 127.0.0.1 或 localhost 并连接来连接到 VNC 服务器。

TigerVNC viewer password prompt

输入您之前创建的 x11vnc 密码。

TigerVNC viewer connected to an X session

恭喜!您现在可以远程控制桌面!

连接到互联网上的机器

到目前为止,本文向您展示了如何设置 x11vnc 服务器以及如何使用通过 SSH 隧道转发的 VNC 连接到它。一个看似显而易见但并非不重要的细节是,此方法仅适用于联网的计算机。由于本指南中介绍的主要用例是远程支持,因此可以合理地假设您希望连接到与您自己的本地区域网络 (LAN) 不同的本地区域网络上的计算机。实现此目的的一种方法是设置 VPN。下面列出的两种指南都将提供合适的私人隧道,以便您通过互联网连接到您的 x11vnc 服务器。

-OpenVPN -Wireguard VPN

结论

您已成功设置 x11vnc 服务器并使用 TigerVNC 客户端连接到它。此解决方案非常适合远程支持,因为它与用户共享同一个 X 会话,从而确保无缝的支持体验。

作者:Joseph Brinkman

贡献者:Steven Spencer、Ganna Zhyrnova