Xt 错误:尽管配置了 xhost 和 Xauthority,仍无法打开显示

Xt 错误:尽管配置了 xhost 和 Xauthority,仍无法打开显示

我正在尝试在本地网络内的另一个显示器上显示支持 X 的程序。

我有一个 X 服务器在 IP 192.168.4.79 的主机上运行,​​使用 display :0。我有另一台主机 (192.168.4.23),我想将其充当客户端:也就是说,它应该运行程序并将其结果显示到位于 192.168.4.79:0 的服务器。

在运行服务器的主机上,我使用 xhost 将客户端 IP 添加到访问控制列表:

$ xhost +192.168.4.23

然后,我提取服务器主机上 ~/.Xauthority 的相关内容,并将其合并到客户端主机上的 ~/.Xauthority 中。

$ xauth extract - $DISPLAY > xauth_extract

然后,使用 ftp 将其复制到客户端主机。并且,在客户端:

$ xauth merge xauth_extract

或者,在支持 ssh 的客户端上(请参阅底部的注释):

$ xauth extract - $DISPLAY | ssh [email protected] xauth merge -

但是,如果我(在客户端上)运行:

$ xterm -display 192.168.4.79:0

我看到错误:xterm: Xt error: Can't open display: 192.168.4.79:0

主机可以很好地通信:ping -c1 192.168.4.79。我也不认为这是防火墙问题。首先,我在运行服务器的主机上设置了防火墙,以接受来自本地网络内的任何连接:

ipset create sjlan hash:net
ipset add sjlan 192.168.4.0/22
iptables -I INPUT -m set --match-set sjlan src -j ACCEPT

此外,如果我暂时禁用服务器主机 ( ) 上的防火墙systemctl stop firewall,我也会收到相同的错误。

我在这里可能会缺少什么?我该如何解决这个问题?


我故意不使用 ssh 来实现此目的,因此请不要回答如何使用 X11Forwarding 来完成此操作。我已经知道如何做到这一点,并且故意不使用它,因为我需要它与运行 30 年历史的 hp-ux 实例(使用 X11R5)的主机一起工作,该实例没有也不能(通过任何不平凡的努力)设置使用 ssh。

另外,我首先使用两台运行 X11R7 的现代 Linux 机器进行测试,因此目前的问题并不是新机器上的 X11 实现与旧机器上的 X11 实现之间存在不兼容性。

我还应该提到,到目前为止唯一有效的方法是在 HP-UX 计算机上运行服务器,并让我想要充当服务器的主机充当客户端。我能够从 192.168.4.79 启动 xterm 并查看其显示并在 HP-UX 计算机上与其交互。因此,新机器上的某些设置似乎阻止了访问。我预计旧机器在安全方面的门槛要低得多。

答案1

大多数现代系统上的 X 服务器默认禁用侦听 IP 地址(因为它本质上不安全),并且仅使用本地域套接字。

详细信息取决于您的发行版,但请参阅和man Xserver参数。您需要找出在您的发行版上启动 X 服务器的内容(显示管理器、systemd 等),或者您可以启动第二个服务器来使用这些选项(如果您的发行版允许)。-listen-nolisten

相关内容