X11 如何工作?

X11 如何工作?

我尝试让 X11 在连接到远程机器时在我的 Mac 上运行,但遇到了很多麻烦。我花了一整天时间在 Google 上搜索,但无济于事。以下是我的主要问题:

  1. ssh -X 和 ssh -Y 之间有什么区别?当我执行这些操作时,哪台计算机(本地或远程)有 x 服务器,哪台有客户端?

  2. startx 命令会启动 x 服务器吗?如果我进入终端并点击 startx,我所做的就是启动 x 服务器?

  3. 我为什么要通过 ssh 连接到远程计算机并使用 startx?我需要 -X 还是 -Y 才能使用 startx?我读过的关于在远程计算机上为 gnome/kde 启动桌面的所有内容似乎都要求您使用 startx。如果我在这种情况下使用 startx,那么谁是 xserver,谁是 xclient?

  4. gnome/kde 窗口管理器在远程机器上使用 startx 是否会干扰 mac 实现自己的 x11 窗口管理器?有什么办法可以解决这个问题?

  5. 像 VNC 这样的东西是如何在所有这些方面发挥作用的?远程 X 会话和仅通过 ssh 进入远程计算机并使用 startx 之间有什么区别吗?

  6. 让 gnome/kde 在服务器的远程机器上运行 GUI 桌面的正确方法/命令是什么?(这样我的电脑上显示的桌面就是服务器的桌面)?我说的桌面是指我想要的壁纸、文件夹、回收站等。

  7. 如果 NX/VNC 是#6 意义上正确获得真正远程桌面的唯一方法,为什么命令 $gnome-session 或 $startkde 会通过 ssh -X 调出我想要的桌面,即使它们不能正常工作?

如果能单独解决每一个问题,那将会很有帮助,但如果您能给我提供一些清晰的文档,那也会很有帮助!

答案1

  1. 如果我没记错的话,ssh -X 将 X 服务器映射到目标机器,然后通过 SSH 创建的通道将连接路由到终端(即您的机器)。“X 服务器”是为“X 客户端”绘制窗口的软件,而“X 客户端”是使用这些窗口的程序。

  2. 是的,startx 会启动 X 服务器。但在 Mac OS X 上,您可以通过在实用程序中启动 X11.app 来启动 X 服务器。

  3. 除非您尝试在通过 SSH 连接的计算机上重新启动 X 服务器,否则您实际上并不想这样做。但这与您与该计算机的连接或您想要通过该连接运行的程序无关。

  4. 我不确定我是否理解了这个问题。远程服务器运行什么窗口管理器对于您的连接来说无关紧要。窗口管理器在 X 服务器(它们是特殊的 X 客户端)上运行,而 Mac 上的 X 服务器和远程计算机上的 X 服务器是两个独立的系统。

  5. VNC 是解决远程显示 GUI 应用程序问题的另一种解决方案。您可以将两者结合起来,但我建议您尝试分别理解它们。

  6. 让 Paul 成为您的 Mac,让 Peter 成为您连接的 (Linux) 机器:

Paul:startx(或者更确切地说,启动 X11.app 并使用它创建的终端窗口进行以下操作)

保罗:xhost +Peter

保罗: ssh -X Peter

Peter:xlogo&(这现在应该显示在 Paul 的屏幕上,如果没有,请继续)

彼得:导出 DISPLAY=Paul:0

Peter:xlogo&(这现在应该显示在 Paul 的屏幕上)

答案2

我为什么要通过 ssh 连接到远程计算机并使用 startx?我需要 -X 还是 -Y 才能使用 startx?我读过的关于在远程计算机上为 gnome/kde 启动桌面的所有内容似乎都要求您使用 startx。如果我在这种情况下使用 startx,那么谁是 xserver,谁是 xclient?

X 对客户端/服务器的定义略显“不寻常”。
带有图形屏幕的机器是服务器,应用程序是客户端。因此,您可以在本地启动 XServer(使用 startx)并可能远程运行客户端(应用程序)。

如果您只运行本地应用程序,那么这些都不重要。以前,当您的应用程序需要“服务器”(即地下室的大型机器)的数字运算能力时,您可以在没有显示器的机器上运行作业,并将其显示在办公室的终端上。

窗口管理器是一个有趣的例子。它只是一个 X 应用程序,跟其他应用程序一样。完全可以在 Mac 上本地启动 Xserver,然后让 Sun 上运行的 Motif 窗口管理器管理本地窗口,同时在其他地方的 Linux 机器上运行 X 应用程序。

附言:将在九月回复中回答,以便人们可以对其进行评论/编辑。

答案3

像 VNC 这样的东西是如何在所有这些方面发挥作用的?远程 X 会话和仅通过 ssh 进入远程计算机并使用 startx 之间有什么区别吗?

VNC 以略有不同的方式完成类似的工作。VNC 只需占用整个屏幕或单个窗口,然后通过网络将视频发送到本地计算机上的 VNC 应用程序。X 在远程计算机上运行应用程序,但通过网络将所有显示命令发送到本地 X 显示器。X 实际上即使在本地运行时也会这样做,但对同一台计算机的网络调用可以简化,而且非常快。

ps. 您不需要通过 ssh 进入远程计算机并启动 x - 您可以在本地启动 X 服务器,然后通过 ssh 进入远程计算机并启动 X 应用程序 (office/gimp/xeyes/etc),然后 X 会在本地处理它。

相关内容