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 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 伺服器的原因,或者您可以啟動第二個來使用這些選項(如果您的發行版允許)。