Using Rdesktop To Access Windows Terminal Services From A GNU/Linux Client

We usually use VNC to administer our Windows servers from our GNU/Linux workstations. Rdesktop allows you to access Terminal Services natively from GNU/Linux. This is a lot easier than running the Terminal Services client from Vmware like we did in this article. Sheeesh… ๐Ÿ™‚ We grabbed version 1.2.0 of rdesktop from here. While you are compiling and installing rdesktop, make sure Terminal Services is configured on your server. You can do this: start->programs->administrative tools->configure your server. Here is a screenshot that shows how to configure Terminal Services. It will take a reboot, and you will need your Windows 2000 CD. Administering the server through Terminal Services is quite a bit smoother than VNC. There are some drawbacks, though, in that installing certain software can fail because Windows 2000 isn’t *really* multi-user. The identity you get when you use Terminal Services to log on as administrator isn’t quite the same as if you log on from the console. We have had numerous problems with this in the past, specifically, we have had trouble installing SQL server remotely this way, even though we were using remote administration mode. It is intended to work, though, and over time the bugs will probably get worked out. For more info, see this article. In the mean time, don’t assume that administering the server via Terminal Services is the same as remote controlling the console.

While Terminal Services is installing, and the server rebooting (sigh), let’s go back to the GNU/Linux client and extract/install the rdesktop software:

u-1@srv-1 rdesk $ ls
u-1@srv-1 rdesk $ tar -xzf rd*.gz
u-1@srv-1 rdesk $ cd rd*
u-1@srv-1 rdesktop-1.2.0 $ 
u-1@srv-1 rdesktop-1.2.0 $ ./configure
rdesktop build configuration script
X Window System:
includes  /usr/X11R6/include
libraries /usr/X11R6/lib
includes  /usr/include
libraries /usr/lib
configure complete - now run make
u-1@srv-1 rdesktop-1.2.0 $ make
gcc -DKEYMAP_PATH=\"/usr/local/share/rdesktop/keymaps/\"
-Wall -O2 -I/usr/X11R6/include -DWITH_OPENSSL -o rdesktop.o
u-1@srv-1 rdesktop-1.2.0 $ su
root@srv-1 rdesktop-1.2.0 # make install
mkdir -p //usr/local/bin
install rdesktop //usr/local/bin
strip //usr/local/bin/rdesktop
chmod 755 //usr/local/bin/rdesktop
mkdir -p //usr/local/share/rdesktop/keymaps/
cp keymaps/?? keymaps/??-?? //usr/local/share/rdesktop/keymaps/
cp keymaps/common //usr/local/share/rdesktop/keymaps/
cp keymaps/modifiers //usr/local/share/rdesktop/keymaps/
chmod 644 //usr/local/share/rdesktop/keymaps//*
mkdir -p //usr/local/man/man1
cp doc/rdesktop.1 //usr/local/man/man1
chmod 644 //usr/local/man/man1/rdesktop.1
root@srv-1 rdesktop-1.2.0 # exit

Now, to administer our Windows 2000 server:

u-1@srv-1 rdesktop-1.2.0 $ rdesktop
rdesktop: A Remote Desktop Protocol client.
Version 1.2.0. Copyright (C) 1999-2003 Matt Chapman.
See for more information.
Usage: rdesktop [options] server[:port]
-u: user name
-d: domain
-s: shell
-c: working directory
-p: password (- to prompt)
-n: client hostname
-k: keyboard layout on terminal server (us,sv,gr,etc.)
-g: desktop geometry (WxH)
-f: full-screen mode
-b: force bitmap updates
-e: disable encryption (French TS)
-m: do not send motion events
-C: use private colour map
-K: keep window manager key bindings
-T: window title
-D: hide window manager decorations
u-1@srv-1 rdesktop-1.2.0 $ 
u-1@srv-1 u-1 $ rdesktop -u administrator -p - srv-48

The -p – prompts for a password. We get a nice logon screen:


We are administering Windows 2000 from our GNU/Linux client:


Now, another cool application of rdesktop is to use it as as a Terminal Services client in application mode. If you have particular applications that users on your GNU/Linux workstations need that are only available on a Microsoft platform, you could use Terminal Services to serve up the application. There are some licensing issues, which you can read about here.