使用 X11 进行 Linux 远程访问28 Feb 2025 | 10分钟阅读 引言为 Linux 系统提供人类可理解的图形界面的部分是 X11 窗口系统。XFree86 或 Xorg 软件包用于显示 X11,并且该软件包安装在所有 Linux 系统中。然而,当 X11 开发时,开发人员假设存在网络透明性,用于支持远程图形应用程序。这就是 Linux 远程桌面支持如此独特且多功能的原因。 ![]() 实际实例必须从中央 SCM 启动,但它们的 GUI 在 X11 服务器/显示器上打开。远程程序连接到本地 X11 服务器并提供绘图命令,而不是发送窗口位图或屏幕图像。 如果在互联网访问中使用,这种技术在开销方面相当昂贵,但在局域网中,它甚至足以以合理的开销运行 OpenGL 应用程序。 使用 X11有几种方法可以从远程控制台使用 X11 启动应用程序。最初,X11 连接是明确通过互联网传输的。为此,系统需要一个监听 TCP 端口 6000 的 X11 服务器,防火墙必须打开,并且本地显示器的访问权限需放宽。这是不希望的,而这正是 SSH 所提供的。SSH 还为提供 X11 访问以及压缩和加密选项开辟了令人兴奋的选项。 注意:通过适当的互联网连接和 SSH 暴露 X11 服务器是不安全的。强烈建议使用 SSH 与 X11 转发以避免中途发生的许多风险。X11 转发SSH 可以启动安全连接的接口管理,有时称为“隧道”。 启动 X11 隧道的命令 要转发 X11,请使用 -X 选项;对于压缩,请使用 -C 选项。连接建立后,可以从命令行启动任何 X11 应用程序。例如,编写或眼睛。为了让客户端转发 X11 连接,服务器必须在 /etc/ssh 下的 sshd_config 文件中启用其 X11 转发。即使设置需要重新启动 SSH 服务器,也可以直接从活动 SSH 连接进行操作。但 X11 在低带宽连接区域可能会变慢。 ![]() 启用 X11 隧道的命令 运行代码后,您将被要求输入一些命令,如下所示: X11Forwarding yes X11DisplayOffset 10 # 此值为默认值 UseLocalhost yes # 此值为默认值 请注意文件 "/etc/ssh/ssh_config" 和 "/etc/ssh/sshd_config" 之间的区别,第一个文件用于创建客户端,第二个文件用于创建服务器。区别在于第二个文件末尾有一个点。 通过 SSH 连接,您可以使用 X Window 系统(有时称为 X11 或简称 X)在远程 Linux 机器上运行图形应用程序。这只能通过已安装并运行的 X 服务器、支持 X 转发的计算机的 SSH 连接以及同样支持 X 转发的客户端来实现。请注意,这可能非常慢,具体取决于您的本地计算机速度,尤其是您的网络连接速度。 VPN 要求本指南以 Colossus 和 Guardian 为例。学生可以使用这些计算机通过 Linux PC 远程完成课程。请注意,为了使用 X 转发并建立 SSH 连接,必须安装并连接 VPN。有关设置 VPN 连接的指导,请参阅相关文章部分。Xpra 在功能上类似于 X 转发,但速度更快,并具有额外的功能。除非方便或应用程序无法与 Xpra 配合使用,否则请避免使用 X 转发。 来自 Linux 计算机即使您使用 Wayland(在 Fedora 等发行版中),XWayland 也提供与 X 的向后兼容性,请在 SSH 命令中使用 -X 标志来实现此目的。 命令 ![]() 为了识别程序是否通过 X 转发启动,它会在标题栏中显示一条通知,内容为“(在 computername 上)”。这就是为什么,根据所选的桌面环境类型、所选的合成器、使用的 X 实现等,您的结果可能会有所不同。上面的截图是在运行 Gnome 3.34.4 的 Fedora 31 上截取的。如果您正在使用 Wayland 合成器,则使用 XWayland,它允许运行 X11 应用程序。 多年来,X11 已经过修改,包含了现代接口,例如共享内存扩展,这使其比以往任何时候都更快。最初,X11 是一个相对简单的协议。XWayland 和其他更近期的项目正在迅速赶上,但 X11 已被广泛采用,因此它仍然远未消亡。大多数 Unix 系统仍使用 X11 作为其原生图形界面,并且在其他相关操作系统上安装也相对容易。 这也促成了 X11 转发的流行,因为服务器管理员可能会期望能够运行时和构建时调整 X11,以便某些软件能够工作,即使它无法进行像渲染 3D 图形设备那样繁重的工作(此外,大多数硬件卡也不适合 3D 处理)。X11 转发仍用于 HPC(高性能计算),主要用于其设计目的,并在银行和其他计算密集型行业中非常流行。 注意:-X 选项主要在用户使用 ssh 命令时使用。我们通过在 /etc/ssh/ssh_config 中添加 ForwardX11 yes 行使其行为默认,但这完全不值得推荐。该设置还会立即向客户端连接的所有其他远程系统显示显示器。神奇的 DISPLAY每个 X11 应用程序在启动时都倾向于连接到其显示器。根据 DISPLAY 环境变量中设置的值,应用程序连接到某个显示器。它也可以用于其他远程应用程序,以某种方式投影到本地显示器。当输入命令 echo $DISPLAY 时,可以确定设置此命令的值。这仅意味着通过 DISPLAY 变量,应用程序最终会联系到错误的服务器。 ![]() 在这里,绘图命令也必须指向那个特定的服务器。SSH 服务器利用这一点。它在 localhost:10.0 模拟一个 X11 显示器,并直接传输它获得的数据。在这里,Schwartzman 教授列出了他认为对于产生新可能性和区分生产性与非生产性创造行为至关重要的十个关键步骤。为此,我们的系统将其端口号设置为 0 并转发所有接收到的数据。 客户端-服务器模型X11 使用客户端-服务器模型。X 服务器是在托管显示器、键盘等的计算机上运行的程序,它(至少)完成所有图形显示任务。X 客户端是处理图形数据的软件应用程序。X 客户端程序将通过 X 服务器使用图形基元连接到这些设备并独立与这些设备通信,这样您在运行多个应用程序时就不会感到疲惫。 在用户站点,不太安全的网络 X 服务器正在运行,而网络 X 客户端在远程站点运行。客户端-服务器术语在远程时可能会很麻烦。X11 的设计具有网络透明性,以便在局域网和广域网上实现 X 服务器和 X 客户端之间的一致通信。 这可以通过让 X 服务器监听可访问的 TCP 地址而不是默认的 Unix 套接字/localhost 来实现。但是,不要直接暴露 X 服务器,因为它默认不安全,因为它使用纯文本 (X11)。另一方面,大多数用户现在使用 X11 转发以 SSH 安全的方式远程运行 X11 应用程序。 使用 XDMCP另一个协议是 X11 显示管理器控制协议,简称 XDMCP;它是设置远程 X11 会话的另一种方式。除了与 UDP 端口 177 相关的数据外,XDMCP 不使用任何字节的数据来描述 X11 连接的会话特性。在这种情况下,人们不再需要 telnet 到机器,然后自己设置 DISPLAY 变量。 ![]() 连接后,它会在登录屏幕中显示显示管理器。在不安全的网络中不使用 XDMCP 至关重要,因为它没有安全措施。所有远程 X11 应用程序实际上都通过未加密的连接与本地显示器通信,并且 XDMCP 很容易被滥用,这很好。XDMCP 的主要优势是可以在快速网络下正常访问远程登录屏幕并正常工作。 当远程计算机设置好后,它会加入本地显示器。由于数据未加密或未隧道化,因此完全没有开销。Tuxracer 是一款易于使用的 OpenGL 游戏,可以在本地网络上通过 X11 的标准连接进行游戏。本地计算机和本地显卡都负责翻译 X11/GLX 命令。 开启 XDMCP然而,这不是必需的,因为必须运行显示管理器(例如 xdm、gdm 或 kdm)才能启用 XDMCP。很可能其中一个程序正在运行;此外,它们为 Linux 提供了相对漂亮的图形登录界面。这些应用程序中唯一需要为 XDMCP 配置的是用于图形登录的那个。这是因为在进行任何配置更改后,需要重新启动显示管理器服务器。 重新启动显示管理器的命令 为 XDM 启用 XDMCP 的命令:/etc/X11/xdm/xdm-config 要启用 XDMCP,请取消注释 xdm-config 文件中的 requestPort 行。在此文件中,感叹号用于注释。 为 GDM 启用 XDMCP 的命令:/etc/X11/gdm/gdm.conf 相比之下,修改 GDM 配置文件比修改 XDM 配置文件容易得多。也可以通过选择 gdmconfig 然后转到“XDCMP”选项卡来启用“启用 XDMCP”复选框。 为 KDM 启用 XDMCP 的命令:(kde 路径)/share/config/kdmrc KDE 安装位置决定了 kdmrc 文件的位置。不幸的是,这不是固定的,取决于 Linux 发行版。在大多数发行版中,该文件安装在 /opt/kde3/share/config/kdmrc 目录中,而在 Gentoo 中,该文件位于 /usr/kde/3.3/share/config/kdmrc;SuSE 将该文件放在 /etc/opt/kde3/share/config/kdmrc 中。 激活 XDMCP这很容易用 Xnest 进行测试。等待几秒钟,如果设置成功,则会出现登录屏幕。 使用 Xnest 测试 XDMCP 的命令 第二个在第二个显示器上调用 Xnest,并且可以看到第一个显示器正在被本地 X 服务器使用。-query 选项指定要使用的 XDMCP 服务器,而 -broadcast 选项将允许检测所有服务器。 要在全屏模式下启动 X11 服务器,请将 Xnest 替换为 X。 启动新 X 服务器的命令 安全性X 服务器限制访问其显示器的方法有几种,但就 X11 转发而言,唯一有意义的是使用 MIT-MAGIC-COOKIE-1 协议的基于 cookie 的访问。此协议必须与 X 客户端提供的有效纯文本 32 字节 cookie 一起使用。如果 X 服务器中有信息表明给定 cookie 对应于所请求的显示器,则允许客户端使用该 cookie 的权限集打开显示器。 SSH 不仅提供加密,还提供用户身份验证方法,这使其方便用于 X11 转发。然而,这些权限不是很详细,而是二分为两部分:受信任和不受信任。 具有受信任权限的 cookie 将授予 X 服务器无限制的访问权限,而不受信任的 cookie 将限制应用程序只能操纵自己的窗口或阻止其访问剪贴板等区域的权限。Xauth 提供了添加和生成接口来管理 X 服务器中的 cookie,如果指定 Xauthority,则将其存储到磁盘上的 $XAUTHORITY。 ![]() 当我们运行 X 程序时,它将从 $XAUTHORITY 或 ~/.Xauth 提供与请求的显示相关的 X Auth 数据,并且在连接到 X 服务器时将提供请求的 X Auth 数据,以便它可以自动进行身份验证。不应做的一件事是,如果 X 程序未能找到请求的显示的任何 X Auth 数据,它将连接而没有 X Auth 数据。 X 服务器将直接使用默认的危险连接建立技术连接到客户端。这意味着 X 程序再次单独控制其身份验证和授权,而不是 X 服务器。这就是为什么 xauth 通常与其他访问控制程序(包括 xhost)结合使用,以确保不受信任的 X 客户端至少不会尝试连接到 X 服务器。 结论Linux 中的 X11 允许用户根据 X 服务器显示器的转发功能重新获得远程运行的图形应用程序。它方便所有系统,并且运行速度比应用于不同系统的其他模型快。但是,在处理远程会话之前,必须采取某些安全措施,例如 SSH。 下一个主题Tiny-core-linux |
我们请求您订阅我们的新闻通讯以获取最新更新。