今回はリモートデスクトップ機能に関して、Ubuntu 24.04 LTSでの挙動、またコマンドラインでの設定方法を解説します。
リモートデスクトップ機能の変更点
リモートデスクトップに関して、22.04 LTSに実装(バックポート)されるまでのドタバタは第713回で詳しく述べたので、繰り返しません。今から振り返ると、このドタバタは24.04 LTSリリースのドタバタと比べるとまだかわいいものだった気もします。
それはさておき、リモートデスクトップ機能を簡単に説明すると、別のPCからデスクトップを閲覧また操作するための機能です。
Ubuntu 22.04 LTSから23.10までのリモートデスクトップ機能の変更点は、VNC機能が削除されたことくらいです。すなわち、プロトコルとしてRDPのみのサポートになりました。
23.10から24.04 LTSの変更点は、リモートデスクトップ機能の設定箇所が「共有」から「システム」に移動しました(図1)。さらに機能が「Desktop Sharing」と「リモートログイン」に分かれました。
「Desktop Sharing」は従来のリモートデスクトップ機能です。したがって「リモートログイン」が新設された機能です。
Desktop Sharingとリモートログインの違い
それでは、Desktop Sharingとリモートログインはどういった違いがあるのでしょうか。
Desktop Sharingは、従来のVNCのプロトコルをRDPに変更したものと理解するとしっくりきます。あくまで今ログインしているユーザーのデスクトップに対し、リモートでログインする機能です。換言すると、ログインしていないとリモートデスクトップとして機能しません。
ところで、WindowsにもPro以上のエディションで使用できるリモートデスクトップ機能があります。RDPというプロトコルはこのために開発されたものです。どのような実装になっているのかというと、ログインしているユーザーがいなくてもログインできるようになっています。
Ubuntuの「リモートログイン」はこのWindowsのリモートデスクトップと近い機能です。Windowsのリモートデスクトップとの違いは、専用のユーザー名とパスワードを設定できることです。セキュリティ考慮すれば、そのほうがいいでしょう。リモートログインで使用するパスワードは、リモートから接続できることもあり、ローカルでログインする際よりもより強固なパスワードにするのが理想的です。
注意が必要なのは、Desktop Sharingとリモートログインは同時に有効にできることです。RDPで使用するポートはデフォルトでは3389ですが、どちらもRDPを使用するため被ってしまいます。そのため両方有効にした場合、Desktop Sharingのポートは3390となります。
Desktop Sharing
実際にDesktop Sharingを有効にし、接続してみます。
「設定」を起動し、「システム」-「Remote Desktop」をクリックします(図2)。すると最初に表示されるタブがDesktop Sharingです。
最初の「Desktop Sharing」はこの機能自体を有効にするかどうかです。「Remote Control」を有効にするとデスクトップを操作できます。有効にしなければ操作できず、あくまで見るだけです。
「接続方法」はその名のとおり接続に必要な情報で、ホスト名とポートが表示されています。通常はこのホスト名に「.local」を付与することになるでしょう。AvahiによるmDNSで名前解決できます。
「Login Details」はログインに必要な情報で、見てのとおりユーザー名とパスワードです。ユーザー名は現在のログイン名がデフォルトですが、変更もできます。パスワードはデフォルトで強固なものになっています。パスワードも変更できるため、好ましいことではありませんがより安易なものへの変更も可能ではあります。
Remminaで接続する場合は、ポート番号に気をつけましょう。図3が接続例です。実際に接続しているところが図4です。
リモートログイン
「リモートログイン」タブを開くと、まずはロックされていることに気づきます(図5)。すなわちルート権限がなければそもそも設定できません。
「ロックの解除」をクリックしてパスワードを入力すると設定できるようになります(図6)。設定項目は「Desktop Sharing」とおおむね同等ですが、「Remote Control」の項目はありません。当然のことではあるのですが。
Desktop Sharingとリモートログインの両方を有効にする場合、同じユーザー名だとどちらかわかりにくいので、今回の例ではリモートログインのユーザー名を変更しています。
Remminaで接続する場合は、「クイック接続」ではなく新たにプロファイルを作成したほうがいいでしょう(図7)。
接続すると、通常どおりGDMでログインするようにユーザー名とパスワードを入力します(図8)。
このことからもわかるとおり、完全にヘッドレスでの運用が可能です。注意点としては、一度ログアウトするとセッションがクリアされます。すなわち、例えば作業の途中でリモートデスクトップビューアー(今回の例だとRemmina)を終了すると、再接続しても状態は復元されません。用途によってはDesktop Sharingのほうが便利なこともあるでしょう。それぞれの特徴にあわせて使い分けてください。
grdctlコマンド
リモートデスクトップの設定や状態の確認はコマンドラインからも行えます。設定をコマンドで行う必要性は特にないでしょうが、SSHで接続して安全な方法でパスワードを確認するには便利でしょう。
状態を確認するには、次のコマンドを実行します。
$ grdctl status --show-credentials
このコマンドで表示されるのはDesktop Sharingの状態です(図9)。ポートの指定が違うのは気になるところですが、あとはたしかにDesktop Sharingの状態です。
リモートログインの状態を確認するには次のコマンドを実行します。
$ grdctl status --show-credencials --system
ローカルで実行した場合は特に問題ありませんが、現状リモートでの実行には対応していないようです。
Desktop Sharing使用時に画面がロックしてしまう
Desktop Sharingを使用中に画面がロックしてしまうと、接続が解除されてしまって復帰しません。これはとてつもなく不便なので、なんとかしたいところです。
残念ながら設定でどうにかなるものではなく、「Allow Locked Remote Desktop」というGNOME Shell拡張機能をインストールし、有効にするのが対策となります[1](図10)。
この拡張機能をインストールすると、ロック画面になっても締め出されずパスワード入力画面になり、正しいパスワードを入力すればロック画面が解除されます(図11)。