Windowsにはリモートデスクトップというアクセサリが入っており、同一ネットワーク上の別のWindowsマシンにリモートアクセスできて便利ですよね(リモート側がProfessional Editionじゃないと公式機能だけではリモートアクセスできなくてこっそり作られたなんかをもにょもにょしないといけなかったりしますが)。
ところでUbuntuに対して同じようにリモートデスクトップでアクセスできたりしないでしょうか。
できるらしいです。
ちょっと待って
もしあなたが使用しているUbuntuが22.04 LTS以上であるなら、面倒なことはほとんどなくリモートアクセスできるようです。こんな記事読むのやめて以下の記事を確認してください。
xrdpの導入
まず初めにxrdpをインストールします。これはWindowsのリモートデスクトップで使用されているRDPを喋れるサーバーアプリケーションです。
sudo apt update
sudo apt install -y xrdp
基本的にはインストールするだけで自動的にサービス起動してくれます。動作状態を確認するには以下のコマンドです。
sudo systemctl status xrdp
もし起動していなかったら以下のコマンドで起動と自動起動設定を行いましょう。
sudo systemctl start xrdp && sudo systemctl enable xrdp
xrdpが接続時に参照しようとするファイルの中にはssl-certグループ以外読み取り禁止のファイルが含まれるため、ユーザーxrdpをssl-certグループに追加します。
sudo adduser xrdp ssl-cert
ファイアウォールの設定
RDPは3389番ポートを使用します。もしファイアウォールが設定されているならば、そのポートへのアクセスを許可してやる必要があります。Ubuntuの標準のファイアウォールであるUFWを念頭に記述します。まずUFWがアクティブになっているか確認します。
sudo ufw status
ここでinactiveとか表示されている場合はUFWがアクティブではないのでこの節は読み飛ばしてください(そもそも有効にすべきだろというのは置いておいて)。
UFWがアクティブな場合、3389を許可します。
sudo ufw allow 3389
IPアドレスを限定する場合は以下のようになります(以下は192.168.1.xxxをまとめて許可する場合の例です)。
sudo ufw allow from 192.168.1.0/24 to any port 3389
詳しくは以下の記事を参照してください。
許可を追加したら以下のコマンドでUFWをリロードします。
sudo ufw reload
Xwrapperの設定
X Window System(平たく言うとUbuntu側のGUI環境)の設定を変更してリモートからの接続を許可しておきます。
/etc/X11/Xwrapper.configを編集し、allowed_usersをanybodyに、needs_root_rightsをnoに設定します。
sudo cp -p /etc/X11/Xwrapper.config /etc/X11/Xwrapper.config.orig # バックアップ
sudo nano -w /etc/X11/Xwrapper.config
# 上記に従って編集
xsessionの設定
接続時のデスクトップの見た目の設定を行います。これをやっておかないといつもと違う画面が出てきて困惑することになります。
nano ~/.xsessionrc
編集内容は以下の感じで。単にセッション開始時に環境変数を設定しているだけです。
export GNOME_SHELL_SESSION_MODE=ubuntu
export XDG_CURRENT_DESKTOP=ubuntu:GNOME
export XDG_DATA_DIRS=/usr/share/ubuntu:/usr/local/share:/usr/share:/var/lib/snapd/desktop
export XDG_CONFIG_DIRS=/etc/xdg/xdg-ubuntu:/etc/xdg
xrdpの再起動
設定をいろいろ変更したのでxrdpを再起動しておきます。
sudo systemctl restart xrdp
Polkitの設定
このまま接続すると「カラープロファイルを作成するには認証が必要です」みたいな画面が何度も出てきて非常に鬱陶しい、どころか自分の場合なぜか認証画面が無限ループしだしたので、予め認証を非表示にしておきます。
sudo nano -w /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla
編集内容は以下の感じで。
[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes
[Allow Package Management all Users]
Identity=unix-user:*
Action=org.debian.apt.*;io.snapcraft.*;org.freedesktop.packagekit.*;com.ubuntu.update-notifier.*
ResultAny=no
ResultInactive=no
ResultActive=yes
なお、この設定はpkaction --versionが0.105以下の場合で、0.106以上では形式が異なるようです。ただし、「ちょっと待って」で示したようにそこまで新しいPolkitが採用されているUbuntuでは必ずしもxrdpを使用する必要はなさそうです。それでも使用する場合は以下のようになるようです……? 未検証であることをお許しください。
sudo nano -w /etc/polkit-1/rules.d/50-allow-useradmin.rules
/* ----Allow user administration in remote Desktop------- */
polkit.addRule(function(action, subject) {
if ((action.id == "org.gnome.controlcenter.user-accounts.administration") &&
subject.isInGroup("sudo")) {
return polkit.Result.YES;
}
});
Ubuntuデスクトップ環境からのログアウト
SSHなどから設定を進めていた場合は必要ない場合もありますが、もし接続先のUbuntuのデスクトップ環境にログインしている場合、複数人で同時にログインできないため予めログアウトしてください。Windowsにリモートデスクトップで接続した場合前のユーザーは勝手にログアウトされますが、こちらは手動でログアウトしておく必要があります。
リモートデスクトップから接続
リモートデスクトップを起動しリモートマシンのIPアドレスを入力して接続します。xrdpがログイン画面を用意してくれているので、Sessionを「Xorg」に、usernameとpasswordをそれぞれ入力してOKを押せばUbuntuのデスクトップ画面が表示されます。
参考記事
以下の記事を参考にしました。誠にありがとうございます。
この記事の情報は以上です。