リモートマシンにVNCを使ってログインする方法

目標

こんな感じでリモートマシンにVNCを使ってログインするのが目標です。SSHでログインしてから手動でVNCサーバを起動する方法は最後に書きます。CentOS 5.3で動作を確認しました。

vnc.png

リモート側の設定

参考:VNC Serverをxinetd経由で立てる方法 [Fedora 10]

  1. yum install xorg* gnome* gdm xinetd vnc-server nautilus
  2. /etc/inittab を編集し(id:5:initdefault:)、ランレベルを5にする
  3. /etc/servicesに「vnc 5900/tcp」と記述する
  4. /etc/xinetd.d/vncを作る。内容は以下の通り(解像度は1440×850くらいがいいという環境もあるかもしれない。解像度の設定を複数用意したい場合は、サービスの名前を変えて/etc/servicesに記載する)
    service vnc
    {
        disable         = no
        nice            = 10
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = nobody
        server          = /usr/bin/Xvnc
        server_args     = -inetd -query localhost -once -geometry 1024x768 -depth 24 --securitytypes=none
        log_on_success  += DURATION
        log_on_failure  += HOST
    }
  5. /etc/gdm/custom.confを以下のように修正する。
    [security]
    DisallowTCP=false
    AllowRemoteRoot=false
    
    [xdmcp]
    Enable=true
    
    [greeter]
    IncludeAll=false
  6. 通信を暗号化しなくてよいなら、/etc/sysconfig/iptablesを編集し、5900/tcpを開ける(暗号化する場合はこの作業は不要)
  7. リモートマシンを再起動する

ローカル側の操作

通信を暗号化しなくてよい場合

TightVNC(Windowsの場合)やChicken of the VNC(Mac OSの場合)のようなVNCクライアントで「リモートマシンのIPアドレス:0」にアクセスする。Mac OSのFinderの「サーバへ接続」で「vnc://リモートマシンのIPアドレス:0/」としても接続できるはずだが、私の環境(Mac OS X 10.6)ではうまくいかなかった。

通信路を暗号化する場合

  1. SSHでログインする
  2. 「ssh -2 -N -f -L 5900:localhost:5900 ユーザ名@リモートマシンのIPアドレス」などとして、localhostの5900/tcpをリモートマシンの5900/tcpに接続するように設定する(ローカル側のポートは任意。TeraTermの「SSH 転送」のようなものを使ってもよい)
  3. TightVNC(Windowsの場合)やChicken of the VNC(Mac OSの場合)のようなVNCクライアントで「localhost:0」にアクセスする。Mac OSのFinderの「サーバへ接続」で「vnc://localhost:0/」としても接続できるはずだが、私の環境(Mac OS X 10.6)ではうまくいかなかった(ポートを5901に変えてもだめだった)。