I'm trying to open xterm
on my remote server (Ubuntu Server 10.04) with ssh:
ssh -X name@machine xterm
but the error returned is:
xterm Xt error: Can't open display: :0.0`
I googled and tried everything I found.
Still getting this error. The DISPLAY-variable should be set automatically, right?
Part of sshd_config
:
X11Forwarding yes
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
Any advice?
Best Answer
If ssh is able to establish the connection, it will set
DISPLAY
to the proper value. Since you haveX11DisplayOffset
set to 10 (the default value), ssh will use the first available display starting at 10. If you see a value that's lower than 10¹, then something is interfering with the normal X11 forwarding set up by ssh, at least by overridingDISPLAY
. The value:0
(or:0.0
, the part after the dot is irrelevant) indicates the first display that was started on the machine, which in typical cases is the active session (or the graphical login prompt) on the machine's console.The most likely explanation for the behavior you observe is that one of your shell configuration files sets
DISPLAY
. The most obvious culprit is~/.bashrc
(which due to a quirk of bash is executed whenever the parent of bash isrshd
orsshd
, even if the shell is not interactive). Another file that defines environment variables is/etc/environment
. If that's the case, the solution is obvious: don't setDISPLAY
there. (There are very few cases where you need to setDISPLAY
manually.)There are other exotic explanations. This might happen if you've changed your login shell to
screen
(a cute idea in theory, but not practical) and you have a shell initialization file that forcibly setsDISPLAY
inside screen (not such a good idea). This could also happen if you configured the server to accept environment variables sent by the client (AcceptEnv
directive insshd_config
), the client is sendingDISPLAY
, and the X connection couldn't be established. Or it could happen if you set an environment variable on the server via thecommand
directive in~/.ssh/authorized_keys
. Orxterm
could be a script.¹ Or whatever the value of
X11DisplayOffset
is in the server configuration, but it's hardly ever changed from the default.