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