VM上のUbuntuにRDP接続する

サーバ

RDPを使ってWindoews上から、VMWare上のubuntuにリモート接続しました。
もともとリモート接続しているようなものなので、必要ないのですが、RDPサーバ環境が必要になったので構築しました。

環境

Windows11Home (IP 192.168.254.1)
 VMWare ゲストOS Ubuntu24.10 (IP 192.168.254.128)
 ※ubuntuにインストールしたxrdpサーバ 0.9.24

# バージョン確認方法
$ > xrdp -v
xrdp 0.9.24
  A Remote Desktop Protocol Server.
  Copyright (C) 2004-2020 Jay Sorg, Neutrino Labs, and all contributors.
  See https://github.com/neutrinolabs/xrdp for more information.

準備

①UbuntuでRDPサーバを構築する

RDPサーバは、軽量なオープンソースソフトであるxrdpを使います。
 xrdp の公式サイトはこちら
NeutrinolabsによるXRDP
使用方法はGitHub – neutrinolabs/xrdp: xrdp: オープンソースの RDP サーバ を参考にしました

# お決まり
$ > sudo apt update
$ > sudo apt upgrade # 全部更新しました(必要に応じてアップデートしてください)

# IP確認
# サーバに割り振られているIPアドレスを確認しておきます
$ > hostname -I
192.168.254.* # → メモしておく

# インストール
$ > sudo apt install xrdp
$ > sudo apt install xorgxdrp 

# サーバの起動
① 起動時に自動実行させる
$ > sudo systemctl enable xrdp 
Synchronizing state of xrdp.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable xrdp

②RDPサーバを起動する
$ > sudo systemctl start xrdp

# 起動状況の確認
$ > sudo systemctl status xrdp
*****:~/デスクトップ$ sudo systemctl status xrdp
● xrdp.service - xrdp daemon
     Loaded: loaded (/usr/lib/systemd/system/xrdp.service; enabled; preset: ena>
     Active: active (running) since Sun 2025-02-02 12:54:40 JST; 6min ago
 Invocation: **************
       Docs: man:xrdp(8)
             man:xrdp.ini(5)
:
# Active: active (running) になっていれば実行中です

# RDPサーバを停止させる
$ > sudo systemctl stop xrdp
$ > sudo systemctl status xrdp
     Loaded: loaded (/usr/lib/systemd/system/xrdp.service; enabled; preset: ena>
     Active: inactive (dead) since Sun 2025-02-02 13:02:58 JST; 3s ago
:
# Active: inactive (dead) になっていれば停止しています

# 自動起動を止める
$ > sudo systemctl disable
# これで自動起動しなくなります

ソフトウェアファイヤウォールの設定

次のコマンドでRDP用のポートを開放しますしておきます。
標準では3389番ポートを使用するようです。

$ > sudo ufw allow 3389

Ubuntのリモートログインロック解除

Ubuntuでは、初期状態でリモートログインができない設定になっていますので、ロックを解除する必要があります。
 CUIでロックを解除する方法がわからなかったので、CUIでのロック解除方法です。
 左下のスタートボタンアイコンから「設定」を開きます。
 これは「スタートボタン」という表現でいいのでしょうか?

「設定」を開く

「Remote Desktop」を開く

画面共有を許可(初期状態ではOFFになっています)

リモートログインを許可(初期状態ではロックされています)

ロックを解除、リモートログインをON、ログインできるユーザ情報を登録します。

※設定変更後は、変更を反映するために再起動が必要でした

②WindowsにRDPクライアントを入れる

RDPクライアントはwindows11Homeにプリインストールされているので、何も入れる必要はありませんでした。
検索窓に「mstsc」と入力するとクライアントが見つかるので起動します。

RDPクライアントの起動

接続先に、RDPサーバのIPアドレスを入力します。

初回起動時には「□このコンピュータへの接続について今後確認しない」が表示されるので、問題なければ☑しておくといいかもしれません。

サーバのIPアドレスを入力すると、資格情報を入力する画面が表示されました。

作成しておいたユーザ名とパスワードを指定します。

証明書が発行されていないと警告されますが、ローカル環境ですのでこのまま進めます。

起動すると警告画面が表示されました。

 翻訳すると、

安全ではない接続を続けますか?
このリモートデスクトップ接続は安全ではありません。この接続を安全にするには、クライアントの接続設定をRDPファイルとして保存し、その中で「リダイレクトサーバ名:i:1を使用する」を設定して、クライアントでRDPTLSセキュリティを有効にします。

セキュア通信ではないよ、という警告でした。
 とりあえずスタンドアロン環境ですので、このまま進めます。
 RDSTLS… TLSで暗号化したRDPプロトコルということだと思っています。(違ったらごめんなさい)

ログインしようとすると、また警告画面が表示されました。

翻訳すると

セッションは既に実行中です

ユーザのセッションがすでに実行されており、ログインできません。
ログインするには、セッションからログアウトするか強制的に停止する必要があります。

強制停止すると実行中のアプリやプロセスが終了し、データが失われる危険があります。

一つのアカウントでは同時にログインすることができないということでしょうか。
VMで起動していたコンソールをログアウトしたところ、問題なくログインできました。

RDP接続によるリモートデスクトップが表示されました。

接続途中でつまづいたこと

 Windowsから接続すると、最初はうまく接続できなかったのですが、Ubuntu上に次のような警告が出ているのに気づきました。

 調べてみたところ、Ubuntuでは初期状態でリモート接続をロックしていることがわかりました。
 設定から、リモート接続を許可したところつながりました。

起動しなくなったときは…

iniファイルを変更しすぎて、起動しなくなったときは、再インストールでxrdpを復活させました。
ちゃんとバックアップとるの大事ですね。

# xrdpをもう一度入れなおす方法
$ > sudo apt remove --purge xrdp
$ > sudo apt autoremove
$ > sudo apt install xrdp

xrdpのログ出力先

/var/log/xrdp.log   … 操作ログ
/var/log/xrdp-sesman.log … セッションログ、ユーザ認証関係のログ

xrdpのインストール先フォルダ

/usr/lib/x86_64-linux-gnu/xrdp

xrdpの定義ファイル

/etc/xrdp/xrdp.ini