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通信なので、パケットを見ても暗号化されています。。。
サーバ側のログを見ましょう。