Understanding X Windows DISPLAY environment variable when tunnelling

54,357

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:

https://serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1

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:

  1. connect on any interface that have the display 10 set up
  2. 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.

Share:
54,357

Related videos on Youtube

user3318603
Author by

user3318603

Updated on September 18, 2022

Comments

  • user3318603
    user3318603 over 1 year

    I want to ssh to remote servers, both running CentOS with X11Forwarding 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 value localhost:10.0. Following the tips here, I change DISPLAY=0:10.0 and it works. However, DISPLAY on host B is still localhost:10.0 and works fine.

    My question is, what does the value in DISPLAY represent? What is the difference between localhost:10.0 and 0: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
    user3318603 over 12 years
    Thanks at first. I find the real problem follow your tips. The real problem is that localhost is binded 192.168.1.200(some specific ip like that. I don't want to expose my real configure.) on host A. It also works when export DISPLAY=127.0.0.1:10.0. Does X forwarding only works on loopback interface?
  • Karlson
    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 running sudo netstat -apn | grep 6010 your SSH should be listening on that port for the display connection. As far as I can tell it's 127.0.0.1 only.