labunix's blog

labunixのラボUnix

xrdp+tigervnc-standalone-server+mate-sessionでをRDP接続

■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
#xserverbpp=24
#delay_ms=2000

■サービスは自動登録される。

$ 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
# /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