I had no problem in running X clients on crimson (FreeBSD 4.7) against the X server on gold (Redhat 7.3 Linux), but when I tried to run X clients against the X server on maroon, which has FreeBSD 4.7 installed, I could not get them running.
It turns out that the X server startup in FreeBSD defaults to
-nolisten tcp
, which means X will not accept remote
connections via TCP/IP. Issuing startx with a "-listen_tcp" argument
turns off this option. I could run X clients against maroon on the
local area network.
I then turned my attention to running X clients via ssh, which would allow me to operate X clients securely over the Internet. First, I wanted to get it working locally.
I followed the instructions outlined in the SSH book, i.e. using the -X argument to ssh, but it simply didn't work. I figured it was something wrong on the crimson server, since the DISPLAY variable on crimson wasn't being set to something like "localhost:10" as shown in examples. However, even with "-vv", the most verbose diagnostic mode, it gave no indication why it wasn't working.
Finally, in desperation, I uncommented the defaults in the
/etc/ssh/sshd_config
file related to X forwarding:
X11Forwarding yes X11DisplayOffset 10 X11UseLocalhost yes
Progress: the DISPLAY variable was now being set, but I still
couldn't connect to the X server on my local machine. So, the
defaults in the sshd config file weren't really defaults after all. I
then added to the /etc/ssh/sshd_config
file, the line:
"XAuthLocation /usr/X11R6/bin/xauth"
That did the trick, now I was connecting successfully. With X running through the ssh tunnel, the X server doesn't even need a -listen_tcp argument!
To ensure arguments, such as -auth, to turn on xauth style X authentication, is sent to the X server, use the following arguments to startx:
startx -listen_tcp -- -auth
See also a later journal entry on SSH and X.