我有 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 服务器的命令行。如果有-nolisten
or -nolisten tcp
,则必须删除;并且你必须添加一个-listen tcp
.
现在启动X服务器的方式有好几种,我不知道你的系统使用哪一种。因此,查看 X 进程的父进程 ID(PPID),再进行一些ps
调用,看看是否可以弄清楚。可能是显示管理器(例如 gdm 或 kdm),也可能是 systemd。无论启动什么,都需要为这些命令行选项进行配置。
如果服务器正确侦听端口 6000,下一步是检查防火墙规则 (iptables)。