EC2のLinuxインスタンスにGUIでアクセスしてみる – JAWS-UG Advent Calendar 2014:4日目

アイキャッチ AWS EC2

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ウィスキー、シガー、パイプをこよなく愛する大栗です。
本エントリはAWSのユーザーズグループJAWS-UGの同士によるアドベントカレンダー『JAWS-UG Advent Calendar 2014』の4日目の内容となります。

Linux on EC2の場合はSSHでアクセスし、CUIで操作を行うと思います。しかし、深淵な理由によりGUIが必要になる場合があります。EC2はネットワーク経由でしか操作できないため、モニタへ直接アクセスできませんので、リモートでGUIアクセスする方法を試してみました。

アクセスしてみる

動作環境

Windows環境からLinux環境へGUIでリモートアクセスする物とします。また、両環境はセキュアなネットワークで接続されている物とします。インターネット経由でアクセスする場合は、VPNやSSHのポートフォワーディングを経由してアクセスすると良いでしょう。

  • Linux環境
    • RHEL 6.1 64bit
    • TigerVNC 1.1.0
  • Windows環境
    • Windows Server 2008 R2
    • TigerVNCクライアント 1.3.1

アクセス方法

X Windows Systemを直接リモートでアクセスせずに、VNC経由でアクセスします。

 Linux環境の準備

パッケージの事前準備

GUI環境を導入するため、以下のコマンドを実行してパッケージを導入します。

yum groupinstall "Desktop" "Desktop Platform" "X Window System" "Fonts"

yum install libXfont

上記を導入する時にパッケージがコンフリクトしている場合があります。今回試した環境では"redhat-lsb"のi686版が対象だったため、以下のコマンドによりパッケージを削除しています。削除するパッケージは

yum remove redhat-lsb.i686

VNCの導入

VNCはTigerVNCを導入します。

yum install tigervnc-server

VNCアクセス用のユーザを作成します。

useradd vncuser

パスワードも設定します。

passwd vncuser

VNCの設定ファイル"/etc/sysconfig/vncservers"を編集します。
以下の内容はディスプレイ番号1にvncuserを設定して1024x768の画面サイズで起動する設定です。

VNCSERVERS="1:vncuser"
VNCSERVERARGS[1]="-geometry 1024x768 -nolisten"

ユーザをvncuserにスイッチします。

su - vncuser

VNC接続用のパスワードを設定します。

vncpasswd

rootに戻り、サービスの設定を行います。

chkconfig vncserver on
service vncserver start

"/home/vncuser/.vnc/xstartup"を以下の様に変更します。

29c29,40
< twm &
---
> # twm &
> 
> # settings for Japanese
> LANG=ja_JP.UTF8
> export LANG
> export GTK_IM_MODULE=scim
> export QT_IM_MODULE=scim
> export XMODIFIERS="@im=SCIM"
> 
> # setting for gnome
> exec gnome-session &
> 

vncserverを再起動します。

service vncserver start

Windowsからの接続

VNCクライアントはこちらから"vncviewer64.exe"をダウンロードしました。
vncviewer64.exeを実行します。

"VNC server"に[VNCサーバのIPアドレス]:[ディスプレイ番号]を設定して"Connect"をクリックします。

vnc-windows

VNCのパスワードを入力します。

vnc-windows

vncuserのパスワードを入力します。

vnc-windows

GUIでログインできました。

vnc-windows

さいごに

EC2のLinuxはサーバ運用を行うため、通常はCUIのみで操作を行うと思いますが、深遠な理由でGUIが必要になった場合は使用する事が可能です。しかし、VNC上でログアウトするとVNCのセッションが操作不能になってしまい、vnc-serverのリスタートが必要になってしまいます。
常時VNC経由でGUIを操作するのは効率が悪く、自動化が行えないため、エンジニアたるものCUIで操作する事(SSHしたら負けだと思っている?聞こえません)を基本としましょう。