UbuntuのAmazon EC2インスタンスにリモートデスクトップ接続できるようにするよ

Pocket

はじめに

少し前のことなのですが、AWS上にUbuntuサーバをたてて欲しいという要望を受けました。依頼者曰く「作業用PC(Windows)から接続できるデスクトップ環境が欲しい」とのことでしたが、使う予定のAmazon AMIにはデスクトップ環境は入っていませんでした。

という訳で、Ubuntuにデスクトップ環境を構築し、リモートで接続できるようにした時の手順を紹介します。

前提

今回はxrdpをサーバに導入して、Windows10のクライアントPCからリモートデスクトップ接続できるようにします。UnixライクOSでは、デスクトップ環境に接続する際にはVNC(Virtual Network Computing)を使うことが多いと思うのですが、xrdpを使えばクライアントがWindowsの場合には追加のソフトウェアが不要(標準で用意されている「リモートデスクトップ接続」を使えばいい)なので、利用者側の準備がすこし楽になります。

動作については、Ubuntu 16.04 LTSで確認しています。

サーバは利用者に引き渡す予定なので、作業はすべてAMIデフォルトのubuntuユーザで行います。また、ユーザがリモートデスクトップ接続に使うアカウントも同じubuntuユーザとしています。「利用者に管理者権限を渡したくないよ」という方は適宜利用者用のアカウントを作成する等してください。また、AMIからEC2インスタンスを作成する手順は省略しています。

手順(サーバ側)

パッケージ最新化

まずは導入されているパッケージを最新化しておきましょう。セキュリティ的にも大切なステップです。

日本語パッケージの構築とロケールの設定

デスクトップ環境で日本語が扱えないと悲しいので、必要なパッケージをインストールします。また、ロケールを日本語にしておきましょう。

ここで一度EC2インスタンスを再起動しておきましょう。

SSHのパスワード認証有効化とパスワードの設定

ubuntuユーザでパスワード認証を有効化します。また、デフォルトではubuntuユーザのパスワードが設定されていないので設定します。

パッケージ管理ソフトのインストール

Ubuntuのインストーラを動作させると、途中でサーバ上で動作させるサービスを選択させる画面が出ますが、それを後から使いたい場合にはtaskselコマンドを使います。まずはコマンドをインストールします。

デスクトップ環境インストール

インストールできたら、taskselを起動します。

リストから「Ubuntu MATE Cloudtop」を選択します。MATE(マテ)はGNOME 2のコードからフォークされたデスクトップ環境です。Cloudtopはクラウドに最適化されたセットです。

日本語入力システムのインストール

日本語入力システムであるMozc(モズク)をインストールします。

リモートデスクトップ接続サーバ(xrdp)のインストール

リモートデスクトップ接続出来るように、xrdpをインストールします。

キーボード設定

キーボードの設定をします。

全てデフォルト選択でOKです。

xrdp日本語配列のキーマップの修正

キーマップがUSのものになっているので、日本語配列用に変更します。

リモートデスクトップ接続サーバの再起動

xrdpサーバを再起動します。

手順(クライアント側)

さて、これでリモートからデスクトップ環境にアクセスできるようにはなったのですが、この状態ではインターネット上に暗号化されていない生のデータが流れてしまうことになります。セキュリティ的に大変よろしくない状態となりますので、通信を暗号化することにしましょう。通信を暗号化するのにSSHポートフォワーディングを利用します。それには少しクライアントPC側に準備が必要です。手順について簡単に説明させていただきます。

TeraTermのインストール

クライアントPCにTeraTermをインストールします。こちらから最新版を入手してインストールしてください。

TeraTermの設定

TeraTermを起動し、表示される「新しい接続」のウィンドウを一度キャンセルしてください。そして「設定」→「SSH転送」を選び、以下の設定を追加します。

  • ローカルのポート:13389
  • ポート:3389

あとは空白で大丈夫です。

もしクライアントPCでTCPの13389番ポートを使っていたら、別のポートを使ってください。(以下の説明もその番号で読み替えてください。)設定は「設定」→「設定の保存」で保存しておいてください。ちなみに私はよく保存し忘れて後でガッカリします。

接続確認

これで準備は整いました。クライアントPCからサーバにリモートデスクトップ接続してみましょう。

まず、クライアントPCでTeraTermを起動し、サーバにSSH接続します。(手順についてはEC2インスタンスにログインしたことのある方はご存知だと思うので割愛します。)この接続はリモートデスクトップ接続を使う間、ずっと保持していてください。利用者には、この通信を切断するとxrdp接続も切れることを伝えておく必要があります。

次に、クライアントPCからリモートデスクトップ接続を起動し、接続情報(「オプションの表示」を押下)を以下の通り入力します。

  • コンピュータ:localhost:13389
  • ユーザ名:ubuntu

「接続」ボタンを押すと、さらに認証画面(Login to xrdp)が出てくるので、以下の通り入力します。

  • Module:sesman-Xvnc
  • username:ubuntu
  • password:ubuntuユーザのパスワード

これでめでたくデスクトップ環境にログインすることができるようになります。

おわりに

普段サーバにデスクトップ環境を入れない(消費メモリが増えるのが嫌なのと、そもそも要件でデスクトップ環境が必要なケースが少ない)上に、個人的にUbuntuに慣れていなかったので、作業に手間取りました。この記事が困っている誰かの助けになれば幸いです。

お問い合わせ先

執筆者プロフィール

Chiba Kumiko
Chiba Kumikotdi デジタルイノベーション技術部
開発プロジェクトの技術支援や技術の検証に従事しているインフラエンジニアです。Unix/Linuxを扱う機会が多く、構築から運用保守まで一通り携わった経験があります。好きな言葉は「試験運用」。
Pocket

関連記事