スベリミナル効果

技術的なことを書こうと思ってたけど何でも書くことにします


通常用

ふざけ用
何でもコメントください。誤り指摘コメントなどには「コメン(ゴメン)」ト誤ります(1スベリ)
ダジャレ好きの方はこちらにどうぞ(更新してないけど)→スベリブログ2.0

CentOS8にWindowsからリモートデスクトップしようとしたら色々ハマってる話

リモートワーク必須な世の中、需要ありそうなので書いておきます。 Linuxリモートデスクトップ接続って

  1. 既にログインされてるデスクトップ環境に接続する(画面共有)
  2. 未ログインから新規にリモートデスクトップする、もしくは画面共有せずに接続する

という2つがありますが、この記事は前者の方法を書いております。後者は上手くいかないので誰か教えて下さい…(後述) なので、この記事は理解が間違ってるかもしれません…

前提環境

リモートデスクトップ元: Windows10の標準リモートデスクトップ接続

リモートデスクトップ先: CentOS8 このくらいのバージョン時点のお話。

$ uname -r
4.18.0-147.5.1.el8_1.x86_64

$ cat /usr/share/gnome/gnome-version.xml
<?xml version="1.0"?>
<gnome-version>
 <platform>3</platform>
 <minor>32</minor>
 <micro>2</micro>
 <distributor>GNOME.Org</distributor>
 <date>2019-11-08</date>
</gnome-version>

$ rpm -qa |grep -e xrdp -e gnome-remote -e vino
vino-3.22.0-10.el8.x86_64
xorgxrdp-0.2.13-1.el8.x86_64
xrdp-0.9.13-1.el8.x86_64
xrdp-selinux-0.9.13-1.el8.x86_64
gnome-remote-desktop-0.1.6-5.el8.x86_64

既にログインされてるデスクトップ環境に接続する(画面共有)

GNOMEは入ってる前提で、結論を先に。

CentOS8での設定

# xrdp入れる
$ sudo yum install xrdp tigervnc-server

# 有効化
$ sudo systemctl start xrdp
$ sudo systemctl enable xrdp

# FW開ける
$ sudo firewall-cmd --permanent --zone=public --add-port=3389/tcp 
$ sudo firewall-cmd --reload

xrdpの設定

$ sudo vi /etc/xrdp/xrdp.ini
[Xvnc] ★作る
name=MySetting
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=5900

[Xvnc2] ★デフォルト設定を2にしておく
name=Xvnc
lib=libvnc.so
username=ask
password=ask
ip=127.0.0.1
port=-1
#xserverbpp=24
#delay_ms=2000
# 設定反映
$ sudo systemctl restart xrdp

GNOMEGUIで画面共有設定

設定から「共有」を開く。 f:id:hijili2:20200407235011p:plain   画面共有をオンにして、パスワードを要求する、を選択してログインパスワードと同じものを入れておく。 f:id:hijili2:20200407235046p:plain   このGUI設定をCLIでやる方法ってないですかね…

# 暗号化OFF
$ gsettings set org.gnome.desktop.remote-desktop.vnc encryption "['none']"

# 画面共有開始時に、ホスト側に許可求めるの止める
$ gsettings set org.gnome.desktop.remote-desktop.vnc auth-method 'password'

Windows側のリモートデスクトップ接続

オプションの表示、から「リモートセッションの色の深度」を16bitにする。(※これ、画面共有の方では不要でした…)

f:id:hijili2:20200407235320p:plain:w448:h603

これで多分つながるんじゃないかなあ。

細かい話

GNOMEのこのバージョンだと、画面共有ONにするだけで、gnome-remote-desktop-daemonが上がるんですね。

$ lsof -i :5900
COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
gnome-rem 3089 hoge      9u  IPv6  44799      0t0  TCP *:rfb (LISTEN)
$ ps aux |grep gnome-re
hoge   3089  0.0  0.1 493580 12520 ?        Ssl  18:45   0:00 /usr/libexec/gnome-remote-desktop-daemon

3389でリモートデスクトップ接続して、5900番ポートに受け流しているわけですね。 CentOS7ではvino-serverしか無かった気がするが…

vino-serverを使う場合

GUIを開いたCentOS8はあってsshもできるんだけど、GUIの画面共有設定ができない状況の場合、vino-serverを使えばCUIだけでなんとかなるかもね。

# vinoの方の暗号化設定OFFる
$ gsettings set org.gnome.Vino require-encryption false

# とりあえずvino-server起動する
$ /usr/libexec/vino-server &>/dev/null &

多分、これでも接続できる…はず…(色々試してるうちにエラーが出るようになってしまったので不安)   この辺の違いがよく分かってない今日このごろ… 5900で待ち受けるやつがgnome-remote-desktop-daemonか、vino-serverかが違うということしか理解してないぽよ。

新規デスクトップ画面開いてログインする(xrdpのデフォルト設定だけでできるはず)(未解決)

これがどうも上手く行かないんですよね… 接続直後にWindowsリモートデスクトップ接続が閉じてしまう。syslog見てもいまいち分からん。

Apr  8 00:30:52 localhost xrdp-sesman[23347]: (23347)(140109264713536)[INFO ] Xvnc :11 -auth .Xauthority -geometry 3840x2160 -depth 16 -rfbauth /home/hosh
ino/.vnc/sesman_passwd-hoshino@localhost.localdomain:11 -bs -nolisten tcp -localhost -dpi 96
Apr  8 00:30:52 localhost xrdp-sesman[22940]: Xvnc TigerVNC 1.9.0 - built Feb  4 2020 16:05:33
Apr  8 00:30:52 localhost xrdp-sesman[22940]: Copyright (C) 1999-2018 TigerVNC Team and many others (see README.rst)
Apr  8 00:30:52 localhost xrdp-sesman[22940]: See http://www.tigervnc.org for information on TigerVNC.
Apr  8 00:30:52 localhost xrdp-sesman[22940]: Underlying X server release 12003000, The X.Org Foundation
Apr  8 00:30:52 localhost xrdp-sesman[22940]: Wed Apr  8 00:30:52 2020
Apr  8 00:30:52 localhost xrdp-sesman[22940]: vncext:      VNC extension running!
Apr  8 00:30:52 localhost xrdp-sesman[22940]: vncext:      Listening for VNC connections on local interface(s), port 5911
Apr  8 00:30:52 localhost xrdp-sesman[22940]: vncext:      created VNC server for screen 0
   :
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:14:49] [INFO ] starting xrdp-sesman with pid 22940
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:14:49] [INFO ] listening to port 3350 on 127.0.0.1
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:52] [INFO ] A connection received from 127.0.0.1 port 42360
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:52] [INFO ] ++ created session (access granted): username hoge, ip 10.0.2.2:49344 - socket: 12
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:52] [INFO ] starting Xvnc session...
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:52] [DEBUG] Closed socket 12 (AF_INET 0.0.0.0:5910)
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:52] [DEBUG] Closed socket 12 (AF_INET 0.0.0.0:6010)
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:52] [DEBUG] Closed socket 12 (AF_INET 0.0.0.0:6210)
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:52] [DEBUG] Closed socket 12 (AF_INET 0.0.0.0:5911)
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:52] [DEBUG] Closed socket 12 (AF_INET 0.0.0.0:6011)
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:52] [DEBUG] Closed socket 12 (AF_INET 0.0.0.0:6211)
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:52] [INFO ] calling auth_start_session from pid 23345
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:52] [DEBUG] Closed socket 9 (AF_INET 127.0.0.1:3350)
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:52] [DEBUG] Closed socket 10 (AF_INET 127.0.0.1:3350)

ここで止まってる?
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:53] [CORE ] waiting for window manager (pid 23346) to exit
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:53] [CORE ] window manager (pid 23346) did exit, cleaning up session
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:53] [INFO ] calling auth_stop_session and auth_end from pid 23345
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:53] [DEBUG] cleanup_sockets:
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:53] [DEBUG] cleanup_sockets: deleting /tmp/.xrdp/xrdp_chansrv_audio_out_socket_11
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:53] [DEBUG] cleanup_sockets: deleting /tmp/.xrdp/xrdp_chansrv_audio_in_socket_11
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:53] [DEBUG] cleanup_sockets: deleting /tmp/.xrdp/xrdpapi_11

このへん確実にterminatedですよねえ
Apr  8 00:30:53 localhost xrdp-sesman[22940]: (22940)(140109264713536)[INFO ] ++ terminated session:  username hoge, display :11.0, session_pid 23345, ip 10.0.2.2:49344 - socket: 12
Apr  8 00:30:53 localhost systemd-logind[1306]: Session c5 logged out. Waiting for processes to exit.
Apr  8 00:30:53 localhost xrdp-sesman[22940]: chansrv::main: using log file [/home/hoge/.local/share/xrdp/xrdp-chansrv.11.log]
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:53] [CORE ] main: app started pid 23375(0x00005b4f)
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:53] [INFO ] main: DISPLAY env var set to :11.0
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:53] [INFO ] main: using DISPLAY 11
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:53] [INFO ] channel_thread_loop: thread start
Apr  8 00:30:53 localhost xrdp-sesman[22940]: [20200408-00:30:53] [INFO ] Socket 12: AF_UNIX connection received

"CentOS8 リモートデスクトップ" でググって頭に出てくるような記事では、特に何も無しで成功しますがなにか?みたいな感じなんですよね… 簡単なことな気はするけど、誰か分かったら教えて下さい。。。   すごくこれっぽいんですけど、未解決クローズなんですよね… うーむ… https://bugzilla.redhat.com/show_bug.cgi?id=1575792

MATE使う方が軽いって聞いたけど?

この記事書いてる時点では、centos8のepelにMATEまだ無かったっす… 7には確かあったんだけどねえ… さすがにビルドする気にはならなかった。

https://tylersguides.com/guides/install-mate-on-centos-8/

さいごに

中途半端な記事でごめんなさい。でも公開する。