Karmic Koala (Ubuntu): enable remote x clients through TCP
It seems every version of Ubuntu has a different way to enable remote connections to the local X server.
I'm asking this question, while I do my own research: how can I enable the X server listening to TCP port 6000 on my machine, thus allowing remote X clients to connect to said port and use my display?
Solution 1:
Based on information found in this page about enabling XDCMP and the file /etc/gdm/gdm.schemas, I managed to create the following file:
# /etc/gdm/custom.conf
[xdmcp]
[chooser]
[security]
DisallowTCP=false
[debug]
I also changed the /etc/X11/xinit/xserverrc file to:
exec /usr/bin/X11/X
i.e. I removed the -nolisten tcp
options to the X executable. I don't know if I needed to. You might want to try avoiding this edit.
After that, all that is needed is a restart of the gdm process:
sudo service gdm restart
You can verify the success as:
tzot@tzot-laptop:/etc/X11
$ netstat -an | grep -F 6000
tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN
tcp6 0 0 :::6000 :::* LISTEN
Solution 2:
if found it in /etc/gdm/gdm.schemas
converted true to false, now it works
<schema>
<key>security/DisallowTCP</key>
<signature>b</signature>
<default>false</default>
</schema>
http://supermanhelp.com
Solution 3:
In later versions of ubuntu the procedure above no longer works due to a new display manager LightDM. To check this execute the shell command:
ps aux | grep `cat /tmp/.X0-lock'
and check for lightdm and the notcp switch. If found update your system by adding to /etc/lightdm.conf the following entry in the [SeatDefaults] section:
xserver-allow-tcp=true
Finally restart your computer and check it works with
netstat -an | grep -F 6000
as shown above.
Solution 4:
As every configuration is different, I found mine with:
sudo grep --include=\*.conf -rwl '/etc/' -e "SeatDefaults"
If you don't find a file, you can try expanding the search by changing '/etc/'
to '/'
Once you locate your file add what others suggested under the [SeatDefaults]
section:
xserver-allow-tcp=true
Save the file and restart the computer.
You may need to use the xauth
on the server you want to access (full info here), e.x.:
xauth extract − $DISPLAY | ssh TheRemoteHost xauth merge −
You may also need to use xhost
(here).
Finally in a new console Ctrl+Alt+F1 use:
sudo X -query TheXhost :1