■xrdp+tigervnc-standalone-server+mate-sessionでをRDP接続
以下と同様。
debian jessieにXRDP+tightvncserver+mate-sessionでRDP接続
http://labunix.hateblo.jp/entry/20151025/1445777819
debian jessieにXRDP+tightvncserver+xfce-sessionでRDP接続
http://labunix.hateblo.jp/entry/20151129/1448739967
xrdpでリモート接続時のjessie+mateのアイコン、日本語キーマップを修正する。
http://labunix.hateblo.jp/entry/20151101/1446306246
$ lsb_release -d
Description: Debian GNU/Linux 9.4 (stretch)
$ sudo tasksel --list-tasks | grep mate
i mate-desktop MATE
$ sudo apt-get install -y tigervnc-standalone-server xrdp
■接続時に「Xvnc」を選択するだけなので、今回はデフォルトのままとする。
$ sudo grep -A 8 Xvnc /etc/xrdp/xrdp.ini
[Xvnc]
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
■サービスは自動登録される。
$ sudo systemctl list-unit-files --type=service | grep -i "xrdp\|vnc"
xrdp-sesman.service enabled
xrdp.service enabled
■稼働中のサービスを確認
$ sudo systemctl list-units --type=service | grep -i "xrdp\|vnc"
xrdp-sesman.service loaded active running xrdp session manager
xrdp.service loaded active running xrdp daemon
■「startvm.sh」からは「/etc/X11/Xsession」が呼び出される。
$ grep [Xx]session /etc/xrdp/startwm.sh
test -x /etc/X11/Xsession && exec /etc/X11/Xsession
exec /bin/sh /etc/X11/Xsession
■「etc」以下の変更はしない方針なので、ユーザ単位の「$HOME」を設定する。
$ sudo grep "HOME\|etc" /etc/X11/Xsession
OPTIONFILE=/etc/X11/Xsession.options
SYSRESOURCES=/etc/X11/Xresources
USRRESOURCES=$HOME/.Xresources
SYSSESSIONDIR=/etc/X11/Xsession.d
USERXSESSION=$HOME/.xsession
USERXSESSIONRC=$HOME/.xsessionrc
ALTUSERXSESSION=$HOME/.Xsession
ERRFILE=$HOME/.xsession-errors
$ cat .Xresources
mate-session
■VNCのパスワードを設定
$ vncpasswd
$ ls .vnc/passwd
.vnc/passwd
■RDPクライアントはremmina
Windowsの場合は、デフォルトのリモートデスクトップ接続でつながる。
$ sudo apt-get install -y remmina
■2ユーザがログインしている状態でのPPIDが1で無いプロセスを確認。
ユーザのxrdpセションを残したままxrdpのサービス再起動を行った場合には、
「xrdp-sessvc」のPPIDが1となって、
孤児プロセスとしてsystemd(init)が引き取ったものとして使用出来ないセッションなので手動でkillする。
$ ps axjf | grep -i "vnc\|xrdp" | awk '!/grep/{if($1>1){a[$1]+=1}}END{for(n in a){print "ps aj "n}}' | sh | \
awk '!/sh|getty|ps /{if($1=="PPID"){b=$0}else{a[$0]+=1}}END{print b;for (n in a){print n}}'
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
23014 25051 23013 23013 ? -1 S 1002 0:00 /usr/sbin/xrdp-sessvc 25053 25052
1 23026 23024 23024 ? -1 S 119 0:00 /usr/sbin/xrdp
21573 21579 21579 21579 tty7 21579 Ssl+ 0 0:01 /usr/lib/xorg/Xorg :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
23014 23032 23013 23013 ? -1 S 1000 0:00 /usr/sbin/xrdp-sessvc 23034 23033
1 23014 23013 23013 ? -1 S 0 0:00 /usr/sbin/xrdp-sesman
■警告として「km-0411.ini」が無いと出ても、表示上バックスラッシュが円マークになる程度で
特に入力に困らなかったので、対処してもしなくても良さそう。
$ sudo awk -F\] '/WARN|ERROR/{a[$2"]"$3]+=1}END{for (n in a){print n}}' /var/log/syslog /var/log/xrdp*
(25045)(140103064660800)[WARN ] local keymap file for 0x00000411 found and doesn't match built in keymap, using local keymap file
: (21612)(140274858462016)[WARN ] local keymap file for 0x00000411 found and doesn't match built in keymap, using local keymap file
(23029)(140103064660800)[WARN ] local keymap file for 0x00000411 found and doesn't match built in keymap, using local keymap file
[WARN ] local keymap file for 0x00000411 found and doesn't match built in keymap, using local keymap file