以前、CentOS 8にxrdpをインストールしてWindows PCからRDP接続してみました。
今回はUbuntu 20.04にxrdpをインストールしてWindows PCからRDP接続してみます。
参考サイト
Ubuntu20.04にXrdpをインストールする方法
https://ja.linux-console.net/?p=671
環境
・Ubuntu 20.04.4 LTS (Focal Fossa)
・Kernel 5.13.0-28-generic
- OS Update, Upgrade
- xrdpのインストール
- 自動起動の確認
- ssl-certグループにユーザxrdpを追加
- xrdpの再起動
- Firewallの許可
- リモートデスクトップ接続
- / etc/xrdp /startwm.shの編集
1 2 |
rootlinks@rUbuntu20:~$ sudo apt update rootlinks@rUbuntu20:~$ sudo apt upgrade |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
rootlinks@rUbuntu20:~$ sudo apt info xrdp Package: xrdp Version: 0.9.12-1 Priority: optional Section: universe/net Origin: Ubuntu Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Debian Remote Maintainers <debian-remote@lists.debian.org> Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 3000 kB Pre-Depends: init-system-helpers (>= 1.54~) Depends: adduser, lsb-base (>= 3.0-6), ssl-cert, libc6 (>= 2.15), libfuse2 (>= 2.6), libjpeg8 (>= 8c), libopus0 (>= 1.1), libpam0g (>= 0.99.7.1), libssl1.1 (>= 1.1.0), libx11-6, libxfixes3, libxrandr2 Recommends: fuse, xorgxrdp Suggests: guacamole, xrdp-pulseaudio-installer Homepage: http://www.xrdp.org/ Download-Size: 428 kB APT-Sources: http://jp.archive.ubuntu.com/ubuntu focal/universe amd64 Packages Description: Remote Desktop Protocol (RDP) server xrdp offers a graphical login to a remote client using RDP (the Remote Desktop Protocol). xrdp can connect to a locally created X.org session with the xorgxrdp drivers, to a VNC X11 server, and forward to another RDP server. . xrdp accepts connections from freerdp, rdesktop, and the built-in terminal server / remote desktop clients of Microsoft Windows operating systems. In the xorgxrdp (which replaces X11RDP) and VNC modes, it provides a fully functional Linux terminal server, offering an X-Window desktop to the user. In the RDP or VNC forwarding mode, any sort of desktop can be used. rootlinks@rUbuntu20:~$ sudo apt install xrdp Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: libfprint-2-tod1 libllvm10 linux-headers-5.4.0-42 linux-headers-5.4.0-42-generic linux-image-5.4.0-42-generic linux-modules-5.4.0-42-generic linux-modules-extra-5.4.0-42-generic Use 'sudo apt autoremove' to remove them. The following additional packages will be installed: xorgxrdp Suggested packages: guacamole xrdp-pulseaudio-installer The following NEW packages will be installed: xorgxrdp xrdp 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 488 kB of archives. After this operation, 3212 kB of additional disk space will be used. Do you want to continue? [Y/n] Y Get:1 http://jp.archive.ubuntu.com/ubuntu focal/universe amd64 xrdp amd64 0.9.12-1 [428 kB] Get:2 http://jp.archive.ubuntu.com/ubuntu focal/universe amd64 xorgxrdp amd64 1:0.2.12-1 [59.9 kB] Fetched 488 kB in 1s (891 kB/s) Selecting previously unselected package xrdp. (Reading database ... 221726 files and directories currently installed.) Preparing to unpack .../xrdp_0.9.12-1_amd64.deb ... Unpacking xrdp (0.9.12-1) ... Selecting previously unselected package xorgxrdp. Preparing to unpack .../xorgxrdp_1%3a0.2.12-1_amd64.deb ... Unpacking xorgxrdp (1:0.2.12-1) ... Setting up xrdp (0.9.12-1) ... Generating 2048 bit rsa key... ssl_gen_key_xrdp1 ok saving to /etc/xrdp/rsakeys.ini Created symlink /etc/systemd/system/multi-user.target.wants/xrdp-sesman.service -> /lib/systemd/system/xrdp-sesman.service. Created symlink /etc/systemd/system/multi-user.target.wants/xrdp.service -> /lib/systemd/system/xrdp.service. Setting up xorgxrdp (1:0.2.12-1) ... Processing triggers for systemd (245.4-4ubuntu3.15) ... Processing triggers for man-db (2.9.1-1) ... Processing triggers for libc-bin (2.31-0ubuntu9.2) ... |
自動起動になっていました。
1 2 3 4 |
rootlinks@rUbuntu20:~$ sudo systemctl list-unit-files | grep xrdp [sudo] password for rootlinks: xrdp-sesman.service enabled enabled xrdp.service enabled enabled |
xrdpがインストールされるとSSL証明書(/etc/ssl/private/ssl-cert-snakeoil.key)が設置されます。この証明書を読み込めるようにssl-certグループにユーザxrdpを追加します。
1 2 3 4 5 6 7 |
rootlinks@rUbuntu20:~$ grep ssl-cert /etc/group ssl-cert:x:113: rootlinks@rUbuntu20:~$ sudo usermod -aG ssl-cert xrdp rootlinks@rUbuntu20:~$ grep ssl-cert /etc/group ssl-cert:x:113:xrdp |
1 |
rootlinks@rUbuntu20:~$ sudo systemctl restart xrdp |
xrdpはデフォルトでポート3389を使用します。これを許可します。
1 2 3 4 |
$ sudo ufw allow from 192.168.2.0/24 to any port 3389 $ sudo ufw reload $ sudo ufw status |
Windows 10から「リモートデスクトップ接続」でUbuntuに接続してみます。
ログイン画面が表示されました。
ログインすると…あれ!? 画面が真っ黒です。何か作業を間違えた???
そこで見つけたのが参考サイトなのですが/etc/xrdp/startwm.shを編集で解決できました。
下記2行を追加してxrdpを再起動します。
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
rootlinks@rUbuntu20:~$ sudo vi /etc/xrdp/startwm.sh rootlinks@rUbuntu20:~$ sudo cat /etc/xrdp/startwm.sh #!/bin/sh # xrdp X session start script (c) 2015, 2017 mirabilos # published under The MirOS Licence if test -r /etc/profile; then . /etc/profile fi if test -r /etc/default/locale; then . /etc/default/locale test -z "${LANG+x}" || export LANG test -z "${LANGUAGE+x}" || export LANGUAGE test -z "${LC_ADDRESS+x}" || export LC_ADDRESS test -z "${LC_ALL+x}" || export LC_ALL test -z "${LC_COLLATE+x}" || export LC_COLLATE test -z "${LC_CTYPE+x}" || export LC_CTYPE test -z "${LC_IDENTIFICATION+x}" || export LC_IDENTIFICATION test -z "${LC_MEASUREMENT+x}" || export LC_MEASUREMENT test -z "${LC_MESSAGES+x}" || export LC_MESSAGES test -z "${LC_MONETARY+x}" || export LC_MONETARY test -z "${LC_NAME+x}" || export LC_NAME test -z "${LC_NUMERIC+x}" || export LC_NUMERIC test -z "${LC_PAPER+x}" || export LC_PAPER test -z "${LC_TELEPHONE+x}" || export LC_TELEPHONE test -z "${LC_TIME+x}" || export LC_TIME test -z "${LOCPATH+x}" || export LOCPATH fi if test -r /etc/profile; then . /etc/profile fi unset DBUS_SESSION_BUS_ADDRESS unset XDG_RUNTIME_DIR test -x /etc/X11/Xsession && exec /etc/X11/Xsession exec /bin/sh /etc/X11/Xsession rootlinks@rUbuntu20:~$ sudo systemctl restart xrdp |
再度、接続してみると画面が表示できました。ちょっとレイアウト、動きが違うけど(^^;
参考サイトの記述で
このステップでは、リモートデスクトップクライアントを使用して、Windows10からUbuntuデスクトップシステムにアクセスします。ただし、その前に、まずUbuntu20.04からログアウトするようにしてください。これは、XrdpがサポートするXsessionが1つだけであるためです。
試しにコンソールでログインしたままでRDP接続してみましたが、一応画面表示までできました。
ただコンソール側でFirefoxを起動した後でリモートデスクトップ側で起動すると既に起動しているとのメッセージが表示されて起動できませんでした。
同一ユーザでログインしているから? 別々のユーザなら大丈夫なのか? よく分かりません。