I've been successfully using vcnserver for many years with various flavors of unix, but I've always been stumped by something - when I ssh into another machine, my xwindows display stops working. As long as I stay on the original machine that is running vncserver, everything is fine but if I move to a different box I get the following error:
pdvboxb:/home/dsixe>xcalc Xlib: connection to "pdvboxa:1.0" refused by server Xlib: Client is not authorized to connect to Server Error: Can't open display: pdvboxa:1.0
Well today I was in need to run an application that required xwindows and I decided to buckle down and find a solution to this nagging situation. Since my memory isn't what it once was, I'm going to record it on this blog so the next time I run into it I'll be able to trace my solution and maybe someone else will find it useful as well.
Here's the scenario, there are two machines - pdvboxa and pdvboxb. I log into pdvboxa using something like putty and fire up vncserver, then I log out and go back in using vnc viewer client to pdvboxa:1. Xcalc works fine here but not when I ssh to pdvboxb.
Several sites recommend using xhost + which seems to open up connections to anyone, but that would be bad. Besides, in my scenario it didn't work anyways.
Using xauth
A better solution is to use xauth to copy the magic cookie created by vncserver (I'm pretty sure vncserver created it) to the second machine pdvboxb.
On pdvboxa run the command xauth list which returns something like:
pdvboxa:1 MIT-MAGIC-COOKIE-1 f73147c509311da56b94ba84597fa41b pdvboxa/unix:1 MIT-MAGIC-COOKIE-1 f73147c509311da56b94ba84597fa41b
Now go to pdvboxb and run the command xauth add using the first magic cookie:
xauth add pdvboxa:1 MIT-MAGIC-COOKIE-1 f73147c509311da56b94ba84597fa41b
Ensure the display var is set correctly:
export DISPLAY=pdvboxa:1.0
Test by running xcalc and you should be good to go.