XDMCP - ArchWiki

Jump to content
From ArchWiki

From Wikipedia:

  The X Display Manager Control Protocol (XDMCP) uses UDP port 177. An X server requests that a display manager start a session by sending a Query packet. If the display manager allows access for that X server, it responds by sending a Willing packet back to the X server.

This allows for opening X sessions remotely.

Warning: XDMCP is, similarly to telnet, doing unencrypted authentication. If snooping is possible, this leaves the system vulnerable to attack. It is disabled by default, using an ssh tunnel for X traffic is preferred.

## Setup graphical logins

### XDM

Comment the last line of the configuration file with a `!`:

    /etc/X11/xdm/xdm-config

    !DisplayManager.requestPort:    0

Then allow any host to get a login window in by un-commenting the following:

    /etc/X11/xdm/Xaccess

    *             #any host can get a login window

In case you have multiple network interfaces also add a line like this:

    LISTEN 192.168.0.10

Where `192.168.0.10` is your server IP address.

Then restart `xdm.service`.

### GDM

Enable XDMCP in the configuration file:

    /etc/gdm/custom.conf

    [xdmcp]
    Enable=true
    Port=177

Then restart `gdm.service`.

### LightDM

Enable the XDMCP Server in the configuration file:

    /etc/lightdm/lightdm.conf

    [XDMCPServer]
    enabled=true
    port=177

On a headless system, disable the automatic start of one seat so that LightDM can run in the background:

    [LightDM]
    start-default-seat=false

Then restart `lightdm.service`.

## Accessing X from a remote machine on your LAN

You can access your login manager on the network computer (using `192.168.0.10` in the following command). TCP and UDP streams are opened. So it is not possible to access the login manager via an SSH connection.

    $ Xnest -query 192.168.0.10 -geometry 1280x1024 :1

Or, with Xephyr, if you experience refreshing problems with Xnest:

    $ Xephyr -query 192.168.0.10 -screen 1280x1024 -br -reset -terminate :1

Or, if you are on runlevel 3

    $ X -query server address

Xserver should recognize your monitor and set appropriate resolution.

Note: You can enable XDMCP Direct/Query and Broadcast connections from remote hosts without XDM starting a local X server.

After allowing XDMCP access as described above, edit `/etc/X11/xdm/Xservers` and comment out:

    #:0 local /usr/bin/X :0

Then launch XDM as root, e.g. `xdm -config /etc/X11/xdm/archlinux/xdm-config`

## Thin client setup

This article or section needs expansion.

Reason: Why does DHCP and TFTP need to be setup ? (Discuss in Talk:XDMCP)

First of all one should setup dhcp and tftp server. Dnsmasq has both of them. For network boot image check thinstation project. If your network card does not support PXE, you can try Etherboot

### GUI-based Clients

- Remmina
- Xming for Windows

## Troubleshooting

### Session declined: Maximum Number of Sessions Reached

Edit `/etc/gdm/custom.conf` and increase `MaxSessions`. It is worth noting that there may be a limit regarding how many XDMCP connections are allowed at once, so it's worth increasing `DisplaysPerHost` as well[1] if multiple clients are connecting from the same IP.

    [xdmcp]
    Enable=true
    MaxSessions=X
    DisplaysPerHost=X

Categories:

- Remote desktop
- X server

Hidden category:

- Pages or sections flagged with Template:Expansion