Last-modified: 2011-12-26 (月) 01:24:45
VNC/さくらVPS上でVNC環境を構築する

概要

さくらVPS上にVNC環境を作成してみます。
必要なときだけSSHでトンネリングしてセキュアに接続します。(ポートフォワーディング)
SSHでポートフォワーディングした場合、通信内容はSSHを経由するのでセキュアに保たれます。
ただし、ポートフォワーディングは接続側の対応なので、サーバー側でVNCへの接続をSSH経由以外で認めないなどは出来ません。
その間もVNC用のポートは開いているため、危険です。
そこで今回は、自宅の固定IPからのみ接続を許可するようにファイアーウォールの設定を行いました。
クライアントは、WindowsでUltraVNCを使いました。

サーバー側のセットアップ

  1. GUI環境がなにも入っていなかったので、X-WindowとGNOMEを入れます。
    Everything is expanded.Everything is shortened.
      1
    
     
    
    yum groupinstall "X Window System" "GNOME Desktop Environment"
  2. GNOMEが入った環境では、既にVNCサーバが入っているようですが、入っていなければ改めてインストールします。
    Everything is expanded.Everything is shortened.
      1
      2
    
     
     
    
    yum list | grep vnc-server
    yum install vnc-server
  3. 初期設定を行います。
    この作業は、VNCで接続したいユーザーにログインした状態で行います。
    Everything is expanded.Everything is shortened.
      1
      2
      3
      4
      5
      6
      7
      8
    
    -
    |
    !
     
    -
    !
    -
    !
    
    # VNCサーバーを起動するコマンド(1024x800はウィンドウサイズ)
    # 初回時に初期設定が走ります
    vncserver -geometry 1024x800
     
    # VNCへ接続するためのパスワードを聞かれるので、入力します
     
    # この状態でつないでもGNOMEではなくX-Windowが使われるので、VNCサーバーを一旦停止します
    vncserver -kill :<ディスプレイ番号。vncserver起動時に表示されます。この時点では通常1>
  4. [~./.vnc/xstartup]を開きます。
    Everything is expanded.Everything is shortened.
      1
      2
      3
      4
    
    -
    |
    |
    !
    
    # コメントアウト
    #twm &
    # 追加
    exec gnome-session
  5. iptablesへルールを追加します。
    私の場合はスクリプトにまとめているので、スクリプトへ以下のルールを追加します。
    Everything is expanded.Everything is shortened.
      1
      2
    
    -
    !
    
    # VNC
    iptables -A INPUT -p tcp --dport 5901 -d <接続を許可するIP> -m state --state NEW -j ACCEPT
  6. スクリプトを実行して、実際にルールを追加します。
    (うまくいくことを確認してからでもいいですが)iptablesの設定を保存します。
    Everything is expanded.Everything is shortened.
      1
    
     
    
    /etc/init.d/iptables save

クライアント側のセットアップ

  1. UltraVNCをダウンロードし、インストールします。
    http://sourceforge.net/projects/ultravnc/
  2. [Next]
    WS000000.PNG
  3. 規約。[Next]
    WS000001.PNG
  4. [Next]
    WS000002.PNG
  5. インストールパス。[Next]
    WS000003.PNG
  6. WindowsにVNCサーバを入れたくなかったので、[Ultra VNC Viewer Only]。[Next]
    WS000004.PNG
  7. スタートメニュー表示。[Next]
    WS000005.PNG
  8. その他。私はVNCファイルを関連付けしましたが、好みの問題。[Next]
    WS000006.PNG
  9. 確認。[Install]
    WS000007.PNG
  10. 終了。[Finish]
    WS000008.PNG
  11. PuTTyを起動します。
    ここではあらかじめ、対象のVNCサーバへ公開鍵暗号でSSH接続できるものとします。
    未設定の場合は、以下をご覧ください。
    SSH/CentOSへのインストール
  12. 対象サーバへの接続情報に以下の設定を追加します。
    [接続] - [SSH] - [トンネル]を開きます。
    「源ポート」に適当なポート、「送り先」に<VNCサーバIP>:5901を設定し、[追加]を押下します。
    一時的ならばそのまま[開く]。恒久的に設定するならば、[セッション]へ戻り保存します。
    WS000009.PNG
  13. 以上でサーバー、クライアントとも設定完了です。

接続方法

  1. PuTTyで、先ほど作成したポートフォワーディングする設定でVNCサーバへログインします。
  2. VNCサーバーを起動します。
    Everything is expanded.Everything is shortened.
      1
    
     
    
    vncserver -geometry 1024x800
  3. UltraVNCを起動します。
    [VNC Server]欄に、「127.0.0.1::<PuTTyで源ポートに指定したポート番号>」を入力し、[Connect]します。
    WS000010.PNG
  4. VNC接続のパスワードを入力します。
    WS000011.PNG
  5. ログインできました。
    WS000012.PNG

終了方法

  1. UltraVNCを終了します。
  2. VNCサーバーを停止します。
    ポートが開いていることや、リソースのことが気にならないのであれば不要です。
    でもそういう使い方をするならば、vncserverをサーバー起動時に起動しておいたほうが、接続方法も1ステップ減って幸せかもしれません。
    Everything is expanded.Everything is shortened.
      1
    
     
    
    vncserver -kill :1
  3. ログアウトします。

検証時の環境