通过 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
路径替换为您之前创建的密码文件路径。另外,将 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) 不同的本地区域网络上的计算机。实现此目的的一种方法是设置 VPN。下面列出的两种指南都将提供合适的私人隧道,以便您通过互联网连接到您的 x11vnc 服务器。
结论¶
您已成功设置 x11vnc 服务器并使用 TigerVNC 客户端连接到它。此解决方案非常适合远程支持,因为它与用户共享同一个 X 会话,从而确保无缝的支持体验。
作者:Joseph Brinkman
贡献者:Steven Spencer、Ganna Zhyrnova