隧道时了解X Windows DISPLAY环境变量


9

我想ssh到远程服务器,都运行CentOSX11Forwarding启用。

但是,X应用程序无法在其中之一上正常运行-在主机B上可以正常运行。但是,每次启动X应用程序时,在主机AI上都会收到错误“无法连接到显示器”。

在检查了DISPLAY我认为与X窗口相关的主机A上的环境变量之后,我找到了它的值localhost:10.0。遵循这里的提示,我进行了更改,DISPLAY=0:10.0并且可以正常工作。但是,DISPLAY在主机B上仍然localhost:10.0可以正常工作。

我的问题是,其中的值DISPLAY代表什么?localhost:10.0和之间有什么区别0:10.0

据说可以localhost识别主机名。然后,它确定哪个主机,正在运行X应用程序的服务器(主机A / B)或要在其中显示X窗口的本地客户端?

任何提示或指向文档的指针将不胜感激。

Answers:


5

答案的一部分实际上可以在这里找到:https : //stackoverflow.com/questions/746119/how-do-you-use-display-specifications

DISPLAY变量基本上由3个组成部分组成:

<host>:<display>[.<screen>]

就本地主机aka 127.0.0.1与0.0.0.0 aka 0而言,您可以看一下这篇文章:

/server/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1

这就解释了差异。

在您的特定情况下,0.0.0.0:10.0和localhost:10.0会具有相同的效果,但基本上意味着:

  1. 在已设置显示器10的任何接口上连接
  2. 在lo0上连接到显示器10的监听器。

实际上没有区别,因为在第一种情况下,所有接口的扫描都将从lo0开始,而lo0通常是列表中的第一个接口。


1
首先谢谢。我发现真正的问题遵循您的提示。真正的问题是在主机A上localhost绑定了绑定192.168.1.200(这样的特定ip。我不想公开我的真实配置。)在export时也可以使用DISPLAY=127.0.0.1:10.0。X转发仅在环回接口上有效吗?
2011年

localhost是一个特殊名称,它绑定到Linux上的回送接口(lo0),永远不要绑定到真实IP地址。您实际上可以通过运行sudo netstat -apn | grep 6010SSH来检查绑定,该SSH应该在该端口上监听显示连接。据我所知,这127.0.0.1仅仅是。
Karlson
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.