Debian Lenny にXRDPを導入する

XRDPはリモートデスクトップ(Terminal Service)と同様に動作します。
mstsc、または、tsclientで接続可能です。

内部的には、RDPからlocalhostのVNCサーバに接続することで、X Windowを操作する仕組みです。
amd64、i386共に同じ設定方法で接続出来ました。

■XRDPサーバの導入

$ apt-cache showpkg xrdp | grep --color vnc4server
$ apt-cache showpkg gnome-session | grep --color metacity
$ sudo apt-get install xrdp gnome-session gnome-terminal
$ sudo /etc/init.d/xrdp restart

■RDPクライアントの導入

$ sudo apt-get install tsclient

■ホームディレクトリに「.vnc/xstartup」を作成、パスワードを設定します。

$ vnc4server && vnc4server -kill :1

■「xstartup」を以下のように編集します。

$ cat .vnc/xstartup | grep -v "^#\|^\$"
/bin/sh /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
exec gnome-session &

■参照しているVNCサーバを確認します。

$ ls /usr/bin/vncserver -l | cut -c 44-
/usr/bin/vncserver -> /etc/alternatives/vncserver

$ ls /etc/alternatives/vncserver -l | cut -c 44-
/etc/alternatives/vncserver -> /usr/bin/tightvncserver

$ ls /usr/bin/tightvncserver -l | cut -c 47-
/usr/bin/tightvncserver

■XRDPの参照も確認します。

$ ls /etc/xrdp/* | for list in `xargs`;do sudo grep vnc "$list" > /dev/null 2>&1 && echo "$list";done
/etc/xrdp/sesman.ini
/etc/xrdp/starttwm.sh
/etc/xrdp/xrdp.ini

■XRDPのRSAキーを再作成します。

$ sudo /usr/bin/xrdp-keygen xrdp

■待ち受けポートを確認します。

$ netstat -an | grep 3389
$ netstat -an | grep 3350

※待ち受けポートは、「/etc/xrdp/xrdp.ini」で「port=13389」等に変更可能です。

■mstsc/tsclientでの接続を確認します。

■ログを確認します。

$ sudo tail -f /var/log/sesman.log
$ sudo grep "xrdp\|vnc\|sesman" /var/log/syslog

■プロセスIDの格納場所

$ ls /var/run/xrdp/

■接続確認を行います。

リッスンポートは「0.0.0.0:3389」なので、以下の順で確認します。
127.0.0.1で接続出来る⇒localhostで接続出来る⇒IP指定で接続出来る⇒ホスト名で接続出来る

ローカルではtsclientを使用します。
リモートからはWindowsのmstscでも構いません。

■Puttyのsshトンネルに設定します。

トンネル設定を行うと、セキュリティレベルがlowでもssh通信をしてしまうので便利です。
XRDP自体は、RSAキーしか利用しませんが、「ssh-keygen -t dsa」とすれば、
DSAキーでの通信も可能です。

[Windows]
13389 -> localhost:3389

[Linux]
$ sudo ssh -L 13389:localhost:3389 user@remotehost -p 22

■クライアントから接続

mstsc
tsclient

「localhost:33389」で接続すると、sshポートをトンネルして、リモートの3389ポートに接続されます。

ssh通信なので、パケットを見ても暗号化されています。。。
サーバ側のログを見ましょう。