hidemium's blog

日々学んだことをアウトプットする。

踏み台サーバーを経由したUbuntuへのリモートデスクトップ接続

前回、踏み台サーバーを経由してVisual Studio CodeのRemote Developmentで接続する方法を記事にしました。今回は、踏み台サーバーを経由してリモートデスクトップ接続について書いてみようと思います。

hidemium.hatenablog.com

構成

  • Windows 10 (接続元)
  • Ubuntu 22.04 (踏み台サーバー)
    • public IP: 192.168.100.100/24
    • internal IP: 192.168.10.100/24
  • Ubuntu 22.04 (接続先)
    • internal IP: 192.168.10.201/24

接続先のサーバーのセットアップ

接続のサーバーは、Ubuntu Desktopとしてインストールを行います。

isoファイルからインストールするか、Ubuntu ServerからUbuntu Desktopのインストールを行いますが、今回はisoファイルからインストールを行いました。

リモートデスクトップ接続の接続先となるサーバーのインターフェイスにプライベートネットワークのIPアドレスを設定しておきます。

踏み台サーバーのインターフェイスの設定は前回と同じです。

xrdpのインストール

Ubuntuには、SettingsにSharing(共有)という機能があります。

こちらの機能は、RDPを使った画面をミラーする機能になり、Windowsリモートデスクトップ接続とは異なり、サーバーにコンソール接続してログインしたい状態ではないと操作ができません。

ログアウトした状態で、リモートデスクトップ接続を行いたい場合は、xrdpを利用します。

Ubuntu 24.04では、リモートログイン機能が入りましたが、Ubuntu 22.04ではないため、リモートデスクトップ接続できるようにxrdp をインストールします。

sudo apt install xrdp

xrdpを使用する場合、X Window SystemXorgが利用され、起動処理の中でGNOMEのデスクトップ環境が選択されて起動します。

  1. ユーザーがRDPクライアントでXorgセッションで接続。
  2. xrdpがstartwm.shを実行。
  3. startwm.sh内で、/etc/X11/Xsessionが呼び出される。
  4. /etc/X11/XsessionがGNOMEデスクトップ環境を起動し、リモートデスクトップGUIを提供。

デスクトップ環境を.xsessionrcで設定することも可能ですが、デフォルトで /usr/share/xsessions/ubuntsu-xorg.desktopGNOMEが指定されてそうでした。

ssh configの設定

接続先の踏み台サーバーが用意できたため、Local Port ForwardingでRDP接続できるように、以下のように C:\Users\User Name\.ssh/config ファイルを編集します。

Host bustion
  HostName 192.168.100.100
  User UserName
  ForwardAgent yes
  LocalForward 13389 192.168.10.201:3389

Windowsからのリモートデスクトップ接続

PowerShellsshコマンドで接続して、Local Port Forwardingができるか確認してみます。

ssh先で何もしないため、-Nオプションを指定しておきます。

ssh -N bustion

Windowsリモートデスクトップ接続を起動し、コンピューターに localhost:13389 を入力します。

接続をするとxrdpのログイン画面が表示されるため、SessionにXorg、usernameとpasswordにUbuntuのログイン情報を入力します。

ログインすると、Dockが表示されず、右上にActivitiesのみ表示されます。

gnome-extensionsコマンドでdockを有効にすると、左側にDockが表示されるようになります。

$ gnome-extensions list
[email protected]
[email protected]
[email protected]
$ gnome-extensinos enable [email protected]