I have a laptop running Ubuntu Desktop 9.04, which has been sitting on a shelf getting occasional remote use. I am also in the process of building a replacement home server for the house from a broken laptop, in a hope to replace the current home server with one that uses less power. So, I went about figuring out how to get a gdm login screen over VNC, for remote graphical login.
I found that I needed to use the vnc4server package instead of the other options for vnc servers on the laptop so that the keyboard would translate properly into the remote session.
sudo apt-get install vnc4server
I already knew that I needed to turn on XDMCP, but figuring out how was a little bit of a challenge since each display manager has the option in a different place, and it also changes with versions of the display managers. I eventually found a graphical tool to turn it on under "System -> Administration -> Login Window", in there I just set "Remote -> Style -> Same as Local" and XDMCP was turned on.
Now I needed to have an inetd to launch the vncserver from, on incoming connections.
sudo apt-get install xinetd
and add a vnc service name to
/etc/services
(if it is not already listed in that file)
vnc 5600/tcp
and add the vnc service to xinetd (
/etc/xinetd.d/vnc
)
service vnc
{
only_from = localhost 192.168.0.0/24
disable = no
id = vnc
socket_type = stream
protocol = tcp
wait = no
user = nobody
server = /usr/bin/Xvnc4
server_args = -inetd -query localhost -once -SecurityTypes=None -extension XFIXES -pn -fp /usr/share/fonts/X11/misc/,/usr/share/fonts/X11/75dpi/,/usr/share/fonts/X11/100dpi/
log_on_failure += USERID
}
The long line starting with server_args is
server_args = -inetd -query localhost -once -SecurityTypes=None -extension XFIXES -pn -fp /usr/share/fonts/X11/misc/,/usr/share/fonts/X11/75dpi/,/usr/share/fonts/X11/100dpi/
, which I could put into a script somewhere to make the line shorter, if I feel the need later.
connections are restricted to the local network only, after restarting xinetd it finally worked.
I will be setting this up again on the server that I am building, and if something is missing I will update it then.