*xrdp [#z05446e5]
[[xrdp>+http://www.xrdp.org/]]

Linuxでリモートデスクトップを待ち受けるソフトウェア。
実際は、ローカルでVNCやconsole接続を行い、それらのパケットをRDPに変換(カプセリング?)する事で、
WindowsのRDPクライアントでも操作出来るようにする物。
その為、xrdp単体でLinuxをリモートGUIで操作はできず、何らかのリモートソフトと組み合わせる事が必須になる。
~
*構築環境 [#bbe8febd]
今回検証した環境はこちら
-openSUSE Leap 42.1
~
*構築 [#l9e166c9]
&size(16){&font(b){0. 注意事項};};
xrdpを動かすには最低限、Xvnc(TigerVNC)かX11rdp(後述)が必須になる。
今回は、構築が一番楽なXvnc+xrdpの構築メモを記述。
~
&size(16){&font(b){1. パッケージインストール};};
-openSUSE
既にビルドされているパッケージからインストールする場合、
openSUSEのオフィシャルに用意されているympファイルを使う。

ympファイルをダウンロードしたら、そのままWebブラウザからyastを起動させるか、
OCICLIコマンドを使って個別にインポートすればxrdpをインストールする事が出来る。

[[Open Source remo desktop protocol (RDP) server>+https://software.opensuse.org/package/xrdp]]
~
-CentOS / Debian
xrdpユーザ会で、CentOS用とDebian用のビルドツールが用意されている。
また、yumとかapt-getでも用意されているので、用途に合った方を使えばOK

CentOS版 [[X11RDP-o-Matic>+https://xrdp.vmeta.jp/X11RDP-o-Matic]]
Debian版 [[X11RDP-RH-Matic>+https://xrdp.vmeta.jp/X11RDP-RH-Matic]]

 [CentOS] # yum install xrdp
 [Debian] # apt-get install xrdp
~
&size(16){&font(b){2. ビルドインストール};};
通常はパッケージで入れれば良いが、別途特殊オプションをenableにする場合はソースから入れる。
また、パッケージで入れた際にキーボードマップが日本語106で認識しない場合には、
ソースからマップファイルをコピーすれば認識する様になる。
~
ビルドでのインストールは未検証なのでコマンドの羅列のみ。
[[オフィシャルのドキュメント>+http://www.xrdp.org/index.php?option=com_content&view=article&id=32:building-xrdp-in-opensuse-13x&catid=2:documents&Itemid=7]]に詳しく書いてあるので、そっち参照を推奨。
 # cd /usr/local/src
 # git clone "https://github.com/neutrinolabs/xrdp.git"
 # cd xrdp
 # ./bootstrap
 # ./configure --prefix=/usr/local/xrdp --enable-fuse
 # make
 # make install
 # /usr/local/xrdp/bin/xrdp-keygen xrdp auto
 # cp /usr/local/xrdp/etc/pam.d/* /etc/pam.d/
~
&size(16){&font(b){3. キーボードマップの更新};};
xrdpのログイン画面で、&font(b){[Shift]+[2]};を押した時に&color(#ff0000){&font(b){[@]};};が出力されるなら&color(#ff0000){必須};
 # cd /usr/local/src
 # git clone "https://github.com/neutrinolabs/xrdp.git"
 # cd xrdp/instfiles
 # ls *.ini | grep -v e0 | xargs -i cp {} /etc/xrdp/
 # cd /etc/xrdp
 # ln -s km-0411.ini km-e0010411.ini
 # ln -s km-0411.ini km-e0200411.ini
 # ln -s km-0411.ini km-e0210411.ini
 # ln -s km-0411.ini km-e0220411.ini
~
&size(16){&font(b){4. WindowManagerの変更};};
デフォルトではRDP接続した時、WMがgnomeになるのでお好みに合わせて変更する。
実際には、xrdpのセッションを張った時に実行されるstartwm.shスクリプトの中にWMが定義されているので、
使いたいWMに合わせて入れ替える事になる。
 # vi /etc/xrdp/startwm.sh
 =====
 ・gnome
 SESSIONS="gnome-session blackbox fluxbox startxfce4 startkde xterm"
 -----
 ・kde
 SESSIONS="startkde gnome-session blackbox fluxbox startxfce4 xterm"
 -----
 ・xterm
 SESSIONS="xterm gnome-session blackbox fluxbox startxfce4 startkde"
~
&size(16){&font(b){5. 証明書認証};};
デフォルトでは証明書も入っていないので、必要ならば証明書も作成する
※xrdpがver0.8.1以上でないと使えないので注意
 # cd /etc/xrdp
 # openssl req -x509 -newkey rsa:2048 -nodes -keyout xrdp.key -out xrdp.cert -days 1095
 # vi /etc/xrdp/xrdp.ini
 -----
 >> # security layer can be 'tls', 'rdp' or 'negotiate'
 >> # for client compatible layer
 >> security_layer=tls
 >> # X.509 certificate and private key
 >> # openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -out cert.pem -days 365
 >> certificate=/etc/xrdp/xrdp.key
 >> key_file=/etc/xrdp/xrdp.cert
 >> certificate=/etc/xrdp/xrdp.cert
 >> key_file=/etc/xrdp/xrdp.key
 -----
 # systemctl restart xrdp