こちらの記事で WindowsのVPSを使ってリモートデスクトップ接続する記事を書いたが、AWSのUbuntu Desktopでリモートデスクトップ接続できないか実験してみた。

PuTTYのインストール

PuTTYは検索すればすぐに出てくるが、ダウンロード先のリンクはこちら

AWSでインスタンス立ち上げ

イメージの種類はUbuntu20.04を選択
AWS_Instance_Ubuntu


インスタンスの種類はt2.mediumにする。(t2.microだとChromeがほとんど動かないくらい重い)
AWS_Instance_Type


基本的にはデフォルトの設定で問題ないが、気を付けるのはセキュリティ設定でSSHの22番ポートがきちんと開いていることを確認しておく。(デフォルトから変更しなければ問題ない)

インスタンス生成時にSSHの鍵ファイルをダウンロードする。(あらかじめ生成しておいたものでもよい)
AWSの鍵ファイルはpem形式だが、PuTTYが受け付けるのはppk形式なので変換が必要だこちらの情報を参考にpemファイルを ppkに変換する。自分の場合はWSLからputtygenを使って変換した。(WSLのインストールの仕方はこちら)

PuTTYの設定

Ubuntu側のリモートデスクトップ設定が終わったら、PuTTY側でクライアントからのSSH接続の設定を行う。
  1. Host NameにインスタンスのパブリックIPアドレスを入力する
  2. 設定を保存しておいたほうが便利なので、Saved Sessionsに名前を入力しSaveを押す
  3. SSHメニューの中のAuthを開き、先ほど生成したppkファイルを設定する
PuTTY Configuration 2020_10_18 19_02_52

PuTTY Configuration 2020_10_18 19_03_01

Ubuntuのリモートデスクトップのインストールおよび設定

以下のコマンドを実行し、Ubuntuのリモートデスクトップのインストールおよび設定を行う
sudo apt update && sudo apt upgrade
sudo sed -i 's/^PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
sudo /etc/init.d/ssh restart
sudo passwd ubuntu
sudo apt install xrdp xfce4 xfce4-goodies tightvncserver
echo xfce4-session> /home/ubuntu/.xsession
sudo cp /home/ubuntu/.xsession /etc/skel
sudo sed -i '0,/-1/s//ask-1/' /etc/xrdp/xrdp.ini

AWSのUbuntuのインスタンスはデフォルト設定ではパスワード認証でログインできないようになっているが、途中で認証の設定を変更し、パスワード認証でログインできるようにするとともにパスワード設定を行っている。
新しいパスワードを入力するように聞かれるので、新しいパスワードを設定する。

Puttyでトンネリング設定

今回はUbuntu側でリモートデスクトップのポートを開いて接続するのではなく、すでに開いているSSHの22番のポートを利用してSSHの中にRDPのプロトコルをトンネリングさせる。少しわかりにくいが下記の図のように、SSH接続が土管(トンネル)となってその中をリモートデスクトップのプロトコルが流れるイメージだ。
ubuntu_tunneling
PuTTYの設定は
  • Source Portに8888
  • Destinationに (Local IP Adressを172.31.3.223とした場合) 172.31.3.223:3389
と入力しAddボタンを押す。
PuTTY Configuration 2020_10_18 20_07_28

この設定をした後に再度PuTTYでUbuntuのインスタンスにSSH接続する。

リモートデスクトップ接続

次にWindowsの端末からリモートデスクトップ接続する。この際に先ほどPuTTYで設定したように接続先を「loclahost:8888」とする。
rdp_client


下記のような画面が現れここでUbuntuで設定したパスワードを入力しログインする。
localhost_8888 - リモート デスクトップ接続 2020_10_18 16_43_48

Google Chromeのインストール

Ubuntuにログインできたらブラウザをインストールする。ここではGoogle Chromeのインストール方法を紹介しておく。Ubuntu上でのGoogle Chromeのインストールは下記のコマンド2つで実行
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb

インストール出来たら左上のメニューからGoogle Chromeが起動できるようになっている。
localhost_8888 - リモート デスクトップ接続 2020_10_18 17_39_44

所感

UbuntuなのでWindowsと比べてサクサク動くことを期待していたが、Ubuntuのリモートデスクトップ環境はかなり重たく、4GBメモリではGoogle Chromeを動かすのでさえもカクカクして実用レベルになかった。AWS上のUbuntuはデスクトップ用途には向いていないので、デスクトップを使いたいのであればおとなしくWindowsのインスタンスを使うほうが良いと思う。
EC2でインスタンスを立ち上げるのも久しぶりにやるとけっこう複雑で、こちらで紹介したAblenetのWindows VPSのほうが楽ちんで初心者にも使いやすいと思いました。