尝试在远程计算机上启动 X 程序时出现“无法打开显示”

尝试在远程计算机上启动 X 程序时出现“无法打开显示”

我有 2 台虚拟机,一台运行 CentOS 7,另一台运行 CentOS 6.5。我想在 CentOS 6.5 虚拟机上运行一个应用程序,但在 7 虚拟机上显示它。

我不能使用ssh -X( 或-Y),我必须使用xeyes -display host:displaynumber,但我现在无法使其工作。

我在 6.5VM 上尝试的是:xeyes -display 192.168.1.20:0

我得到以下信息:

No protocol specified
Error: Can't open display: 192.168.1.20:0

然而,当我ssh -X 192.168.1.20(从6.5VM),然后xeyes,它确实工作正常,(并且通过正确地我的意思是它成功连接到 7VM,并且 xeyes 应用程序显示在 6.5VM 上),所以我认为这不是主机名的问题。反之亦然(也就是说,我从 7VM ssh 到 6.5VM 以启动 xeyes)也可以正常工作。

echo $DISPLAY:0在两台机器上都给出。我确实添加X11Forwarding yes到/etc/ssh/sshd_config。 (AllowTcpForwarding yes也是)

如果我忘记了什么,请随时询问更多信息。我是个新手,所以我可能忘记了一些简单的细节。

预先感谢您的任何答复!

答案1

部分答案:

X 服务器可以监听 unix 域套接字(用于本地连接)和 TCP 端口(6000 + 显示编号)。后者在现代服务器上默认被禁用,这可能是您无法连接的原因。

因此,在您想要连接的服务器(第 7 个虚拟机)上,执行ps axu | grep X类似操作,然后查看启动 X 服务器的命令行。如果有-nolistenor -nolisten tcp,则必须删除;并且你必须添加一个-listen tcp.

现在启动X服务器的方式有好几种,我不知道你的系统使用哪一种。因此,查看 X 进程的父进程 ID(PPID),再进行一些ps调用,看看是否可以弄清楚。可能是显示管理器(例如 gdm 或 kdm),也可能是 systemd。无论启动什么,都需要为这些命令行选项进行配置。

如果服务器正确侦听端口 6000,下一步是检查防火墙规则 (iptables)。

相关内容