Another ‘damn! I keep forgetting how to do that!’ post…
When you want to display something from one unix box to another there are two ways of doing it.
1. Use ssh. You need to use ‘ssh -X’ specifically which will allow X11 forwarding. ssh takes care of setting the DISPLAY variable for you. You also need to ensure that the server is configured for X forwarding:
# X11 tunneling options X11Forwarding yes X11DisplayOffset 10 X11UseLocalhost yes
This just works if you are a regular user, but if you need to display something as another user then you run into problems. For example you may need to run a gui installer that can only run as root.
So heres how to get it to work as root.
Firstly, as your normal user get your DISPLAY variable and the corresponding xauth entry. This can be a little tricky
$ echo $DISPLAY localhost:10.0
Now search the xauth list for the corresponding entry. If you got localhost above, then search for the actual hostname. On some systems ‘xauth list $DISPLAY’ may work fine, others you’ll need to search:
$ xauth list|grep :10|grep server server/unix:10 MIT-MAGIC-COOKIE-1 99410f7406b0f93e6117ae55a72a7eca
Next become the root user, or whatever user you need to be.
Set the display variable and add the xauth entry:
# DISPLAY=localhost:10 # export DISPLAY # xauth add server/unix:10 MIT-MAGIC-COOKIE-1 99410f7406b0f93e6117ae55a72a7eca
You should now be able to fire up an xterm on the system as the new user and it will appear on your desktop.
2. Use xhosts. This is the more traditional way, but does have a gotcha for newer versions of solaris, which are more secure than previously.
On your desktop do:
$ xhost + access control disabled, clients can connect from any host $ echo $DISPLAY :0.0
Now log onto the remote system and set the display variable and try an xterm. It will probably fail:
$ DISPLAY=desktop:0.0 $ export DISPLAY $ xterm xterm Xt error: Can't open display: desktop:0.0 $
Whats happening here is that although you have allowed the xserver access control to accept connections from any host, the X server itself isnt actually listening for connections. To change that you need to do the following on your desktop:
svccfg -s svc:/application/x11/x11-server setprop options/tcp_listen = true
Then restart the Xserver.
This method will work for all users, so you can log in, become root, then just set your display.
3 ok there are alternative methods if you are really stuck. For example start up a VNC session on the server and view it on your desktop. Though thats only worth doing if you need someone else to be able to view what you are doing.