我在两台机器上运行 X - astra (slackware 15) 和 nebula (macos mojave)。我想在 astra 本地运行 xeyes,并将其显示在 nebula 上。我对各种文档的理解是我应该能够运行:
xeyes -display nebula:X.Y
来自 astra,其中 X 是星云上的显示索引,Y 是屏幕编号。
我尝试了很多X和Y的组合,没有X或Y等等都没有效果。我不断收到错误消息:
错误:无法打开显示:nebula:XY
我能够在本地使用以下命令显示在远程计算机上运行的 X 程序:
ssh -Y host
没有问题,但这不是我要解决的问题。我希望能够在本地运行我的本地客户端,并让显示远程显示,如上所述并由 Xorg 服务器支持。
过去的工作方式和现在的工作方式可能有所不同,我找到的文档较旧。
答案1
要在 nebula 上显示,来自 astra 的 MacOS Mojave 计算机、Slackware 15 计算机需要执行几个步骤:
- 在 XQuartz 首选项中 - 安全 -> 允许来自网络客户端的连接。
- 重新启动 XQuartz
- 从星云获取 MIT-MAGIC-COOKIE-1
- 将其添加到 astra 的 xauth 列表中
- 从 astra 运行客户端,它将显示在 nebula 的屏幕上
详细信息如下:
要查看 X 是如何启动的,请运行ps aux | grep X
:
user 96691 0.0 0.0 4279568 5012 ?? S 12:39PM 0:00.01 /opt/X11/bin/Xquartz :0 -nolisten tcp -iglx -auth /Users/user/.serverauth.96532
需要注意的关键点是-nolisten tcp
和-auth
。这些分别表明 X 服务器未侦听 TCP,并且与 X 服务器的连接需要身份验证。
更改 XQuartz 中的首选项以允许网络连接并重新启动它会导致以下更改:
user 97993 0.0 0.0 4279568 5004 ?? S 2:08PM 0:00.01 /opt/X11/bin/Xquartz :0 -listen tcp -iglx -auth /Users/user/.serverauth.97835
现在,XQuartz 正在监听 TCP,如下所示-listen tcp
要从星云、在星云上或通过远程登录获取魔法身份验证 cookie,请运行xauth list
并找到正确的 cookie:
nebula:0 MIT-MAGIC-COOKIE-1 240800a1f435f70d92f8f8c706eeb547
在 astra 上,使用以下命令将 cookie 添加到 xauth 列表:
xauth add nebula:0 . 240800a1f435f70d92f8f8c706eeb547
如果一切顺利,您现在应该能够从 astra 运行 xeyes:
xeyes -display nebula:0
需要注意的事项:
- XQuartz 需要运行:)
- cookie 需要是最新的。它会改变。
- 命令中有一个点是
xauth add
必需的。