Linuxでリモートデスクトップを待ち受けるソフトウェア。
実際は、ローカルでVNCやconsole接続を行い、それらのパケットをRDPに変換(カプセリング?)する事で、
WindowsのRDPクライアントでも操作出来るようにする物。
その為、xrdp単体でLinuxをリモートGUIで操作はできず、何らかのリモートソフトと組み合わせる事が必須になる。
今回検証した環境はこちら
0. 注意事項
xrdpを動かすには最低限、Xvnc(TigerVNC)かX11rdp(後述)が必須になる。
今回は、構築が一番楽なXvnc+xrdpの構築メモを記述。
1. パッケージインストール
ympファイルをダウンロードしたら、そのままWebブラウザからyastを起動させるか、
OCICLIコマンドを使って個別にインポートすればxrdpをインストールする事が出来る。
Open Source remo desktop protocol (RDP) server
CentOS版 X11RDP-o-Matic
Debian版 X11RDP-RH-Matic
[CentOS] # yum install xrdp [Debian] # apt-get install xrdp
2. ビルドインストール
通常はパッケージで入れれば良いが、別途特殊オプションをenableにする場合はソースから入れる。
また、パッケージで入れた際にキーボードマップが日本語106で認識しない場合には、
ソースからマップファイルをコピーすれば認識する様になる。
ビルドでのインストールは未検証なのでコマンドの羅列のみ。
オフィシャルのドキュメントに詳しく書いてあるので、そっち参照を推奨。
# 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/
3. キーボードマップの更新
xrdpのログイン画面で、[Shift]+[2]を押した時に[@]が出力されるなら必須
# 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
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"
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.cert >> key_file=/etc/xrdp/xrdp.key ----- # systemctl restart xrdp