EC2のLinuxインスタンスにGUIでアクセスしてみる – JAWS-UG Advent Calendar 2014:4日目
ウィスキー、シガー、パイプをこよなく愛する大栗です。 本エントリは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のパスワードを入力します。
vncuserのパスワードを入力します。
GUIでログインできました。
さいごに
EC2のLinuxはサーバ運用を行うため、通常はCUIのみで操作を行うと思いますが、深遠な理由でGUIが必要になった場合は使用する事が可能です。しかし、VNC上でログアウトするとVNCのセッションが操作不能になってしまい、vnc-serverのリスタートが必要になってしまいます。 常時VNC経由でGUIを操作するのは効率が悪く、自動化が行えないため、エンジニアたるものCUIで操作する事(SSHしたら負けだと思っている?聞こえません)を基本としましょう。