通过 x11vnc+SSH 共享桌面
简介¶
x11vnc 是一个强大的 VNC 程序。x11vnc 与其他 VNC 程序不同的地方在于,管理员可以捕获用户现有的 X 会话,而不是被迫创建一个新的会话。这使得 X11VNC 非常适合为 Linux 桌面提供远程支持。
本指南将教您如何设置 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
路径替换为您之前创建的密码文件的路径。此外,将 User
和 Group
值替换为您打算提供远程支持的用户的用户名。
[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 隧道¶
创建 SSH 隧道以安全地连接到 VNC 服务器。
ssh -L 5900:localhost:5900 REMOTEIP
启动 VNC 查看器¶
使用以下命令打开 VNC 查看器。
vncviewer
在 TigerVNC 中输入 127.0.0.1 或 localhost 并连接,以连接到 VNC 服务器。
输入您之前创建的 x11vnc 密码。
恭喜!您现在可以远程控制桌面了!
连接到互联网上的机器¶
到目前为止,本文已向您展示了如何设置 x11vnc 服务器以及如何通过 SSH 隧道使用 VNC 连接到它。重要的是要注意,此方法仅适用于同一本地区域网络 (LAN) 上的计算机。假设您想连接到不同 LAN 上的计算机。实现这一点的一种方法是设置 VPN。以下是一些有关如何设置 VPN 的指南。
结论¶
恭喜!您已成功设置 x11vnc 服务器并使用 TigerVNC 客户端连接到它。此解决方案非常适合远程支持,因为它与用户的 X 会话共享,确保了无缝的支持体验。
作者:Joseph Brinkman
贡献者:Steven Spencer, Ganna Zhyrnova