2014年9月11日木曜日

AWS EC2 CentOS に SSH経由で VNC 接続してみる

これまでの流れ:
1:急にiDempiere に興味を持った。
2:iDmpiere を使うためにAWS(Amazon Web Services) アカウントを作成することにした。
3:AWS にEC2 インスタンスを作成し、 CentOS をセットアップすることにした。
4: SSHの設定をして外部からアクセスできる様にしてみた。

で、コマンドラインでは使いにくいのでデスクトップ環境を作ってみることにする。

まずは一番近いミラーサイトの登録
運用に入る前であればあまり気にする必要は無いかもしれませんが、ダウンロードに時間がかかるのもいやなんで、一応おまじないがてら。。その後すべて最新化


# yum -y install yum-plugin-fastestmirror
# yum -y update
ちょい時間かかりますが、しばし待つ。
更新できたら次はデスクトップのインストール



# yum -y groupinstall "X Window System" 
# yum -y groupinstall "Desktop"
# yum -y groupinstall "General Purpose Desktop"
ちなみに -y オプションを入れないと、いちいち Yes/No 聞かれてうざいです。(確認したい慎重な人は -y は入れずに実行してください。)

だーっとメッセージが流れるのを見るのもいいでしょうし、お茶でものんでまったりするの良いでしょう。

次はVCN 設定しなきゃ

VNC サーバーをインストール
#  yum  -y install tigervnc-server

ここまで super user (root)で作業してきましたが、通常ユーザーでできる作業用にユーザーを作成しておくことにします。

でもその前に、、、
気がついたのですが、 rootのパスワードどこにも設定していません。と言うわけで唐突ですがパスワード設定しておきます。(設定したパスワードは絶対に忘れないようにしてください。忘れたら一巻の終わりです。)


passwd                                                                    
Changing password for user root.                             
New password:                                                           
Retype new password:     

次は通常ユーザーの設定
名前は、、maginger とでもしておきましょうか。理由はありません。なんとなくです。
パスワードは、、、見せませんが、想像通りのものです。
# useradd maginger
# passwd maginger
Changing password for user malinger.                       
New password:                                                           
BAD PASSWORD: it is WAY too short                    
BAD PASSWORD: is too simple                              
Retype new password:                 
短いし簡単すぎると叱られるも念ずれば通ず。Retype すればOKです。
(後ほどちょっと後悔しました、素直に6文字以上のパスワードにしておきましょう。)

続いてVNCサービスの設定です。
VNC のコンフィグをいじるのですが、、、、
ここで人によっては問題が、、、テキストエディタが vi なんです。
なんじゃそりゃ、と思う人もいるとおもいますが、、、Windows や Mac しか使ったことがない人にとっては気が狂うんじゃないかっていうくらい扱いにくい代物です。
(Unix や Linux の経験がある人にとってはなんのことはないのだけど。。。)
ここでは長くなりすぎるので使用方法省略。

作業前に一応オリジナル版を保存しておくのを習慣づけるとよいでしょう。(-p は属性保存オプション)
# cp -p /etc/sysconfig/vncservers /etc/sysconfig/vncservers.org
# vi /etc/sysconfig/vncservers

vncservers に3行追加します。(ユーザーは上で作った maginger ユーザー、rootはいらないかなぁ?)
VNCSERVERS="1:maginger 2:root"
VNCSERVERARGS[1]="-geometry 1024x768 -nolisten"
VNCSERVERARGS[2]="-geometry 800x600 -nolisten"

再起動したとき vncserver も自動起動する設定 & 確認
# chkconfig vncserver on
# chkconfig --list vncserver
vncserver       0:off   1:off   2:on    3:on    4:on    5:on    6:off         

VNC のパスワード設定、 root と maginger 両方やっときます。
root のまま vncpasswd 設定


# vncpasswd
Password:                                                                                                
Verify:

maginger ユーザーに substitute user (ユーザーの切り替え)して、vncpasswd設定

# su - maginger                                                                                       
$ vncpasswd
Password:                                                                                                
Password must be at least 6 characters - try again                                 
Password:                                                                          
maginger ユーザーのパスワードは CentOS と合わせたかったのですが、先ほど短すぎるとの警告を無視して設定して勝ち誇った気になっていたものの、ここで壁に突き当たりました。で、vnc のパスワードはあっさりと長目のパスワードに変更。はじめから素直に6文字以上にしておけばよかったかな。
(CentOS ユーザー maginger のパスワードは面倒なので変更せず短いままにしてあります。)

maginger ユーザーでの処理が終わったらmaginger ユーザーをexit して root にもどりましょう。(本当は通常は一般ユーザーで特殊な処理だけルートになり、終わったら都度exitというのが普通なんですけど、必要があって su したあとは、目的に作業終えたらすぐに exit することは習慣にすることをお勧めします。)
$ exit
logout 
#                                                                              

で、vnc サーバースタート

# /etc/init.d/vncserver start                                                     


私は /etc/sysconfig/vncservers の設定ミスっていて何度か起動出来ませんでした。
Starting VNC server: no displays configured                [FAILED]
とかエラーでたらユーザー名確認してみてください。

続いてWindows 側の設定に移ります。


realvnc を使ってみます。リンクをたどるとrealvncのページに行きます。
http://www.realvnc.com/download/vnc/latest/

インストール画面は省略。指示に従ってポチポチしていくだけ、でも途中試用版のライセンス出すところでユーザー登録が必要。ちっ、面倒だけど、しょうがないか。。


で、ここで先に進むのに2択。
1:realvnc から直接 AWSに接続する。
2:設定済みの SSH(TuPPY)を経由して AWSに接続する。

ここでは以下2点の理由から2を選択します。
1:realvnc trial は無料ですが、通信の暗号化はしません。
2:AWS EC2 のポートに穴をたくさん開けたくない。
セキュリティを言い出すと、すでに SSH anywhereの設定なので今更感もありますが、余計な穴はないにこしたことはないでしょう。

というわけでこれを前提に TuPPYとrealvncの設定をします。

まず TuPPY に realvnc が通れるトンネルを設定
Connections -> SSH -> Tunnels
Source portに適当な数値(これはあとでrealvncからの接続に使います)
Destinationに localhost:5901 と入れます。(vnc は一般的に port 5901を使います)



ここでもあせって Openボタンを押さずに一度設定をセーブしておきましょう。
Hostname は AWS の PublicDNSが起動毎に変わるので空白にしてあります。
めんどうですが、毎回 PublicDNSをコピーしています。


SSHに通信の暗号化をまかせるために PuTTY経由で接続するために、まずPuTTYで AWS にログインする必要があります。

接続完了後、realvncを起動します。
VNC Server のところは直接 AWS EC2 のアドレスを入力してもいいのですが、今回はPuTTY経由なので、先ほどPuTTYのトンネルで指定した数値を使います。
ここではVNC Serverにlocalhost:9001と入力しました。


接続時ワーニングがでますが、暗号化してないと言っています。今回PuTTY側で暗号化をしているので問題ありません。
Don't warn me about this again. にチェックを入れてしまえば次からは表示されません。


Continue ボタンを押すとパスワードが求められます。
Username がないので誰のパスワードやら。。。

試しに vncpasswd で入力した root のパスワードを入れたら駄目でした。
で、同じく vncpasswd で入力した maginger のパスワードを入れたら通りました。
なんだろ?


おおっ、なんか感動。




ユーザー maginger のパスワードが求められますが、これは CentOS のユーザーのことです。(ちとややこしい)

なので私は vncpasswd の設定で短かすぎると拒否された CentoOS の maginger のパスワードを入力しました。
すると、、、出ました。ようやくGUIを使えるようになりました。



お疲れ様でした。

次はPostgreSQLかな?



0 件のコメント:

コメントを投稿