リモートワーク必須な世の中、需要ありそうなので書いておきます。 Linuxのリモートデスクトップ接続って
- 既にログインされてるデスクトップ環境に接続する(画面共有)
- 未ログインから新規にリモートデスクトップする、もしくは画面共有せずに接続する
という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
GNOMEのGUIで画面共有設定
設定から「共有」を開く。
画面共有をオンにして、パスワードを要求する、を選択してログインパスワードと同じものを入れておく。
この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にする。(※これ、画面共有の方では不要でした…)
これで多分つながるんじゃないかなあ。
細かい話
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/
さいごに
中途半端な記事でごめんなさい。でも公開する。