/var/www/yatta47.log

/var/www/yatta47.log

やったのログ置場です。スクラップみたいな短編が多いかと。

Ubuntu 22.04.1 LTSでのRDP接続とユーザ認証の活用方法

普段家にあるサーバはCUIでしか使わないのですが、GUIで使いたい用途が出てきました。

GUI自体はインストールしてあって、ただモニター繋いでいない状態です。ただ、モニター繋ぐの面倒くさい。ってことで、RDPで接続できるようにしました。

OS情報は以下です。

yatta47@hero-box:/var/log$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.1 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
yatta47@hero-box:/var/log$

インストールしてみる

Ubuntuに対してrdp接続できるようにするには、xrdpを使います。

www.xrdp.org

aptでインストールします。

sudo apt install xrdp

ちゃんと起動しているかどうかを確認します。

sudo systemctl status xrdp

状態を確認してみたら、何やらエラーが出ている。

yatta47@hero-box:/opt/Jan$ sudo systemctl status xrdp
● xrdp.service - xrdp daemon
     Loaded: loaded (/lib/systemd/system/xrdp.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2024-01-06 13:33:25 JST; 1min 7s ago
       Docs: man:xrdp(8)
             man:xrdp.ini(5)
    Process: 976850 ExecStartPre=/bin/sh /usr/share/xrdp/socksetup (code=exited, status=0/SUCCESS)
    Process: 976858 ExecStart=/usr/sbin/xrdp $XRDP_OPTIONS (code=exited, status=0/SUCCESS)
   Main PID: 976859 (xrdp)
      Tasks: 1 (limit: 9215)
     Memory: 868.0K
        CPU: 39ms
     CGroup: /system.slice/xrdp.service
             mq976859 /usr/sbin/xrdp

 1月 06 13:34:12 hero-box xrdp[977179]: [INFO ] Using default X.509 certificate: /etc/xrdp/cert.pem
 1月 06 13:34:12 hero-box xrdp[977179]: [INFO ] Using default X.509 key file: /etc/xrdp/key.pem
 1月 06 13:34:12 hero-box xrdp[977179]: [ERROR] Cannot read private key file /etc/xrdp/key.pem: Permission denied
 1月 06 13:34:12 hero-box xrdp[977179]: [ERROR] libxrdp_force_read: header read error
 1月 06 13:34:12 hero-box xrdp[977179]: [ERROR] [ITU-T X.224] Connection Sequence: CR-TPDU (Connection Request) failed
 1月 06 13:34:12 hero-box xrdp[977179]: [ERROR] xrdp_sec_incoming: xrdp_iso_incoming failed
 1月 06 13:34:12 hero-box xrdp[977179]: [ERROR] xrdp_rdp_incoming: xrdp_sec_incoming failed
 1月 06 13:34:12 hero-box xrdp[977179]: [ERROR] xrdp_process_main_loop: libxrdp_process_incoming failed
 1月 06 13:34:12 hero-box xrdp[977179]: [ERROR] xrdp_iso_send: trans_write_copy_s failed
 1月 06 13:34:12 hero-box xrdp[977179]: [ERROR] Sending [ITU T.125] DisconnectProviderUltimatum failed

鍵が読めないようなので、ssl-certグループにxrdpを追加してあげて、再起動してあげます。

sudo adduser xrdp ssl-cert
sudo systemctl restart xrdp

これで正常状態になりました。

yatta47@hero-box:/opt/Jan$ sudo systemctl status xrdp
● xrdp.service - xrdp daemon
     Loaded: loaded (/lib/systemd/system/xrdp.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2024-01-06 13:35:06 JST; 5s ago
       Docs: man:xrdp(8)
             man:xrdp.ini(5)
    Process: 977338 ExecStartPre=/bin/sh /usr/share/xrdp/socksetup (code=exited, status=0/SUCCESS)
    Process: 977346 ExecStart=/usr/sbin/xrdp $XRDP_OPTIONS (code=exited, status=0/SUCCESS)
   Main PID: 977347 (xrdp)
      Tasks: 1 (limit: 9215)
     Memory: 852.0K
        CPU: 28ms
     CGroup: /system.slice/xrdp.service
             mq977347 /usr/sbin/xrdp

 1月 06 13:35:05 hero-box systemd[1]: Starting xrdp daemon...
 1月 06 13:35:05 hero-box xrdp[977346]: [INFO ] address [0.0.0.0] port [3389] mode 1
 1月 06 13:35:05 hero-box xrdp[977346]: [INFO ] listening to port 3389 on 0.0.0.0
 1月 06 13:35:05 hero-box xrdp[977346]: [INFO ] xrdp_listen_pp done
 1月 06 13:35:05 hero-box systemd[1]: xrdp.service: Can't open PID file /run/xrdp/xrdp.pid (yet?) after start: Operation not permitted
 1月 06 13:35:06 hero-box systemd[1]: Started xrdp daemon.
 1月 06 13:35:07 hero-box xrdp[977347]: [INFO ] starting xrdp with pid 977347
 1月 06 13:35:07 hero-box xrdp[977347]: [INFO ] address [0.0.0.0] port [3389] mode 1
 1月 06 13:35:07 hero-box xrdp[977347]: [INFO ] listening to port 3389 on 0.0.0.0
 1月 06 13:35:07 hero-box xrdp[977347]: [INFO ] xrdp_listen_pp done

問題発生

これで終わりだーと思っていたら、接続はするもののどうにも画面が真っ暗になり接続できているけど表示がされない。

ひとつ気になっているのは、rdpで接続する際にユーザ/パスワードで認証しているところ。

普段使っているユーザはpem認証にしているため、パスワードは未設定です。pem認証のユーザに対して接続する方法もあるような気がするのですが、ちょっと調べてわからなかったので、rdp接続専用に新しいユーザを作りました。

sudo adduser sample

新しく作成したユーザで接続してみたところ、ちゃんと接続できました。

よかったよかった。

まとめ

GUIはめったに使わないですが、RDPで接続できるようにしておくと便利だなと思いました。

誰かの参考になれば幸いです。