はじめに
Ubuntu 26.04のWayland環境に、Windowsからリモートデスクトップ接続する方法を紹介します。
今回は、WindowsとUbuntuが同じローカルネットワーク(LAN)に接続されている環境を想定しています。
目標は、Ubuntuにログインしていない状態でも、WindowsからUbuntuのログイン画面に接続して、デスクトップを操作できるようにすることです。
設定中に発生した認証エラーと、その解決方法についても紹介します。
1. 使用環境
| 項目 | 環境 |
|---|---|
| 接続元 | Windows |
| 接続先 | Ubuntu 26.04 |
| ディスプレイサーバー | Wayland |
| デスクトップ環境 | GNOME |
| 接続方式 | RDP |
| RDPクライアント | mstsc |
| ネットワーク | 同一LAN内 |
この記事では、次のサンプルIPアドレスを使用します。
| 機器 | IPアドレス |
|---|---|
| Ubuntu | 192.168.1.100 |
| Windows | 192.168.1.101 |
これらは説明用のIPアドレスです。実際に使用する際は、自分のネットワーク環境に合わせて変更してください。
2. Ubuntuのリモートログインを有効にする
Ubuntuには、GNOME Remote Desktopというリモートデスクトップ機能があります。
大きく分けて、次の2種類があります。
デスクトップ共有
Ubuntuにログイン済みのデスクトップを、別のPCから操作する機能です。
リモートログイン
Ubuntuにログインしていない状態でも、別のPCからログインして操作する機能です。
今回はログイン画面から接続したいため、リモートログインを使用します。
Ubuntuで次の設定画面を開きます。
設定 → システム → リモートデスクトップ → リモートログイン
「ロック解除」を押して管理者認証を行い、リモートログインを有効にします。
接続用のユーザー名とパスワードを設定しておきます。
この認証情報は、普段Ubuntuにログインするときのものとは別です。
3. UbuntuのIPアドレスを確認する
Ubuntuのターミナルで、次のコマンドを実行します。
hostname -I
今回は、UbuntuのIPアドレスを次のように仮定します。
192.168.1.100
複数のIPアドレスが表示される場合は、Windowsと同じLANに属するアドレスを使用します。
IPアドレスは固定した方がいい?
IPアドレスが変わってしまうと、Windowsから接続できなくなる場合があります。
そのため、継続して使用するのであれば、IPアドレスを固定しておくと便利です。
固定する方法には、主に次の2つがあります。
- ルーター側でDHCP予約を設定する
- Ubuntu側で固定IPアドレスを設定する
個人的には、ルーター側でDHCP予約を設定する方法が管理しやすいと思います。
なお、サンプルIPアドレスをそのまま設定するのではなく、ルーターのDHCP設定や、ほかの機器との重複がないことを確認してください。
4. Windowsからリモートデスクトップ接続する
Windowsで「Win + R」を押します。
「ファイル名を指定して実行」が表示されたら、次のコマンドを入力します。
mstsc
mstscは、Microsoft Terminal Services Clientの略です。
Windowsに標準搭載されているリモートデスクトップ接続プログラムを起動できます。
接続先には、UbuntuのIPアドレスを入力します。
192.168.1.100:3389
3389は、RDPで標準的に使用されるポート番号です。
Ubuntuのリモートログインで設定したユーザー名とパスワードを入力します。
認証に成功すると、Ubuntuのログイン画面が表示されます。
その画面では、普段使用しているUbuntuのユーザー名とパスワードを入力します。
つまり、認証は2段階です。
- WindowsからのRDP接続認証
- Ubuntuへのユーザーログイン認証
5. 認証エラーが発生した
実際に設定してみると、Windows側でログインに失敗する問題が発生しました。
WindowsからUbuntuには接続できているようでしたが、認証に失敗してログイン画面まで進めません。
そこで、Ubuntu側のRDPサービスの状態を確認してみました。
RDPサービスの確認
Ubuntuのターミナルで実行します。
sudo grdctl --system status
実際の診断では、主に次の情報が表示されました。
Overall:
Unit status: active
RDP:
Status: enabled
Port: 3389
Authentication methods: credentials
この結果から、RDPサービスは起動しており、リモートログインも有効になっていることが分かります。
また、RDPの待ち受けポートは3389番でした。
エラーログを確認する
続いて、次のコマンドでサービスのログを確認しました。
sudo journalctl -u gnome-remote-desktop.service -n 50 --no-pager
すると、次のエラーが繰り返し表示されていました。
Could not find user in SAM database
SEC_E_NO_CREDENTIALS
client authentication failure
このエラーは、RDPの認証処理で、指定されたユーザーに対応する認証情報を見つけられず、認証に失敗していることを示しています。
推測ですが、Windowsから送信されたユーザー名と、Ubuntu側に登録されていたRDP接続用のユーザー名が一致していなかった可能性があります。
なお、ログには次の警告も表示されていました。
Init TPM credentials failed
using GKeyFile as fallback
これはTPMを利用した認証情報の初期化に失敗し、代替の保存方式に切り替わったことを示しています。
この警告だけで、今回の認証失敗の原因がTPMにあるとは判断できません。
6. RDPの認証情報を再設定する
まず、Ubuntu側のRDP接続用ユーザー名とパスワードを再設定しました。
Ubuntuのターミナルで、次のコマンドを実行します。
sudo grdctl --system rdp set-credentials
ユーザー名とパスワードの入力を求められるので、新しい認証情報を設定します。
今回は、普段のUbuntuユーザーと区別するため、RDP専用のユーザー名を設定しました。
RDPユーザー名:rdpuser
RDPパスワード:新しく設定したパスワード
パスワードは推測されにくいものを設定してください。
設定が完了したら、RDPサービスを再起動します。
sudo systemctl restart gnome-remote-desktop.service
これで、Ubuntu側のRDP認証情報を再設定できました。
7. Windowsに保存された認証情報を削除する
Windowsが古い認証情報を保存している可能性もあるため、保存済みの認証情報を削除します。
WindowsのPowerShellを開き、次のコマンドを実行します。
cmdkey /delete:TERMSRV/192.168.1.100
保存された認証情報が存在しない場合は、削除対象が見つからないというメッセージが表示されます。
その場合は、そのまま次に進みます。
続いて、もう一度リモートデスクトップ接続を起動します。
mstsc /v:192.168.1.100:3389
Windowsの認証画面で「別のアカウントを使用する」を選択します。
ユーザー名には、先ほどUbuntuで設定したRDP用のユーザー名を入力します。
rdpuser
パスワードには、新しく設定したRDP用パスワードを入力します。
この時点では、普段のUbuntuログイン用パスワードを入力しないように注意します。
8. Ubuntuのログイン画面が表示された!
認証情報の再設定と、Windows側の保存済み認証情報の削除を行った結果、Ubuntuのログイン画面が表示されました。
これで、WindowsからUbuntuへのRDP接続認証に成功しました。
今回の問題は、RDPの認証情報に関連していた可能性が高いと考えられます。
ただし、Ubuntu側の認証情報の再設定と、Windows側の保存済み認証情報の削除を両方実施したため、どちらが直接の解決要因だったかまでは特定できません。
少なくとも、今回の問題を解決するためにRDPサーバーを再インストールする必要はありませんでした。
9. WindowsからUbuntuにログインする
RDP接続認証に成功すると、Ubuntuのログイン画面が表示されます。
そこで、普段Ubuntuにログインするときのユーザー名とパスワードを入力します。
RDP接続用の認証情報とは別なので、注意してください。
Ubuntuのデスクトップが表示されれば、Windowsからマウスやキーボードで操作できるようになります。
10. Ubuntuを再起動して接続を確認する
継続して利用する場合は、Ubuntuを再起動した後もリモートログインができるか確認しておきます。
Ubuntuのターミナルで実行します。
sudo reboot
再起動後は、Ubuntu本体ではログインせず、Windowsから接続します。
mstsc /v:192.168.1.100:3389
再起動後もUbuntuのログイン画面が表示されれば、ログイン前から接続できることを確認できます。
※ 今回の作業では、RDP認証に成功してUbuntuのログイン画面が表示されるところまで確認しました。再起動後の接続については、まだ確認していません。
11. 接続できないときの確認コマンド
今後、接続できなくなったときのために、確認用のコマンドをまとめておきます。
UbuntuのIPアドレス
hostname -I
RDPの設定状態
sudo grdctl --system status
RDPサービスの状態
sudo systemctl status gnome-remote-desktop.service
RDPの待ち受けポート
sudo ss -lntp | grep ':3389'
RDPのエラーログ
sudo journalctl -u gnome-remote-desktop.service -n 50 --no-pager
Windowsからポートの疎通確認
WindowsのPowerShellで実行します。
Test-NetConnection 192.168.1.100 -Port 3389
次のように表示されれば、WindowsからUbuntuの3389番ポートまでTCP通信が到達しています。
TcpTestSucceeded : True
ただし、TCP通信が成功していても、RDPの認証が成功するとは限りません。
ファイアウォールの確認
UbuntuでUFWを使用している場合は、状態を確認します。
sudo ufw status
UFWが有効で、WindowsからのRDP接続が許可されていない場合は、WindowsのIPアドレスを指定して許可します。
sudo ufw allow from 192.168.1.101 to any port 3389 proto tcp
これで、指定したWindowsからUbuntuの3389番ポートへの通信を許可できます。
まとめ
Ubuntu 26.04のWayland環境でも、GNOME Remote Desktopを使えば、Windowsからリモートデスクトップ接続できます。
今回のポイントは次のとおりです。
- ログイン前から接続する場合は「リモートログイン」を使用する
- Windows標準のmstscから接続できる
- RDP接続用とUbuntuログイン用の認証情報は別々
- 認証エラーが出た場合はgrdctlとjournalctlで確認する
- 今回は認証情報の再設定とWindows側の保存情報の削除で解決した
- UbuntuのIPアドレスを固定しておくと継続利用しやすい
最初はWindowsからUbuntuへの接続がうまくいきませんでしたが、エラーログを確認することで問題を絞り込むことができました。
今回の経験から、Linuxで問題が発生したときは、サービスを再インストールする前に、まず状態とログを確認することが大切だと改めて感じました。