Understanding X Windows DISPLAY environment variable when tunnelling
Part of the answer can actually be found here: https://stackoverflow.com/questions/746119/how-do-you-use-display-specifications
DISPLAY variable is basically 3 components:
<host>:<display>[.<screen>]
As far as localhost aka 127.0.0.1 vs. 0.0.0.0 aka 0 is concerned you can take a look at this post:
Which explains the difference.
In your particular case 0.0.0.0:10.0 and localhost:10.0 would have the same effect but basically mean:
- connect on any interface that have the display 10 set up
- connect on lo0 to the listener of display 10.
Practically there would be no difference since in the first case the scan of all interfaces would start with lo0, which normally is the first interface in the list.
Related videos on Youtube
user3318603
Updated on September 18, 2022Comments
-
user3318603 over 1 year
I want to ssh to remote servers, both running
CentOS
withX11Forwarding
enabled.However the X application cannot run properly on one of them - on host B it works fine. But on host A I get the error "couldn't connect to display", each time I launch X application.
After checking the
DISPLAY
environment variable on host A which I think is related to X window, I found its valuelocalhost:10.0
. Following the tips here, I changeDISPLAY=0:10.0
and it works. However,DISPLAY
on host B is stilllocalhost:10.0
and works fine.My question is, what does the value in
DISPLAY
represent? What is the difference betweenlocalhost:10.0
and0:10.0
?It is said that
localhost
identifies a host name. Then which host does it identify, the server(host A/B) on which my X application is running or my local client where I want the X window to display?Any hints or pointers to documentation would be appreciated.
-
user3318603 over 12 yearsThanks at first. I find the real problem follow your tips. The real problem is that
localhost
is binded192.168.1.200
(some specific ip like that. I don't want to expose my real configure.) on host A. It also works when exportDISPLAY=127.0.0.1:10.0
. Does X forwarding only works on loopback interface? -
Karlson over 12 years
localhost
is a special name that binds to a loopback interface (lo0) on Linux it should never be bound to a real IP address. You can actually check the binding by runningsudo netstat -apn | grep 6010
your SSH should be listening on that port for the display connection. As far as I can tell it's127.0.0.1
only.