X11

Xt 錯誤:儘管配置了 xhost 和 Xauthority,但仍無法打開顯示

  • May 29, 2022

我正在嘗試在本地網路中的另一個顯示器上顯示支持 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 user@192.168.4.23 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。

另外,我首先在兩台現代 Linux 機器上進行測試,它們都執行 X11R7,所以目前的問題不是 X11 在新機器上的實現與舊機器上的不兼容。

我還應該提到,到目前為止唯一有效的方法是在 HP-UX 機器上執行伺服器,並讓我想充當伺服器的主機充當客戶端。我能夠從 192.168.4.79 啟動 xterm 並在 HP-UX 機器上看到它的顯示並與之互動。因此,新機器上的某些設置似乎阻止了訪問。我希望舊機器在安全性方面的障礙要低得多。

大多數現代系統上的 X 伺服器在預設情況下禁用了對 IP 地址的偵聽(因為它本質上是不安全的),並且只使用本地域套接字。

詳細資訊取決於您的發行版,但請參閱man Xserver-listen參數-nolisten。您需要找出在您的發行版(顯示管理器、systemd、…)上啟動 X 伺服器的原因,或者您可以啟動第二個來使用這些選項(如果您的發行版允許)。

引用自:https://unix.stackexchange.com/questions/704290