Ubuntu 10.04 LTS へ VNCServer を入れる

せっかくUbuntuサーバへGUI環境をいれたので、VNC接続ができるように設定をしました。
簡単にメモしておきます。

VNCクライアントからユーザ権限で直接アクセスする場合

vncserverをインストールする。

$ sudo aptitude install vnc4server

vncserverを起動する。(display=1 5901/tcp を開く場合)

$ vncserver :1

初回起動の場合は、vnc接続の際のパスワードを求められるので、入力します。
※あとで変更したい場合は、vncpasswdコマンドを使用します。


スタート用のシェルのリンクを作成します。このファイルはVNCサーバを起動したときに作成されますが、
デフォルトだと、いつも使っているウィンドウマネージャーで起動せず、ショボイものとなってしまいます。
そのため、書き換えます。

$ cd ~/.vnc/
$ cp xstartup xstartup.org
$ ln -s /etc/X11/Xsession xstartup

これでいつも使っているデスクトップ環境が起動されるようになります。


また、iptablesを利用している場合は、vncserverのポートを開ける必要があります。
例えば、192.168.11.0/24にアクセスを許可する場合は次のようにします。

$ iptables -A INPUT -p tcp -s 192.168.11.0/24 --dport 5901 -j ACCEPT


クライアントにインストールされているvncviewerを使用して接続します。
OSXの場合は、「chicken of the vnc」というフリーなvncviewerがあるのでこれを使うと良いと思います。
Chicken of the VNC download | SourceForge.net

ホスト名、ディスプレイ番号、パスワードを入力して接続をします。
vncserverとの接続を切っても勝手にサーバは落ちないので、必要がなくなったらサーバを落としておきます。

$ vncserver -kill :1

ただ、この設定だと、事前にvncserverを起動しておく必要があるのと、自由にユーザを切り替えて接続ができません。
次に説明する方法であれば、直接ログイン画面からアクセスできるので、自由にユーザを選択しての起動が可能になります。

VNCクライアントから直接ログインする場合

vncserver, xinetdをインストールします。

$ sudo aptitude install vnc4server xinetd 

次に、パスワードファイルを作成します。

$ sudo vncpasswd /etc/passwd_vnc 
$ chown nobody:tty /etc/passwd_vnc


次に設定ファイルを新規作成します。

sudo vi /etc/xinetd.d/xvnc

内容:

service xvnc
{
        disable = no
        socket_type = stream
        wait = no
        user = nobody
        group = tty
        server = /usr/bin/Xvnc
        server_args = -inetd -geometry 1024x768 -depth 24 -query localhost -once -PasswordFile=/etc/passwd_vnc
        port = 5900
}

※ server_args行の-geometry、-depth、port 行は適宜変更して下さい


使用するポートを設定するために、「/etc/services」を編集します。ファイルの最後に下記を追記します。

$ sudo vi /etc/services

追記する内容:

xvnc            5900/tcp                        # VNC Server


gdmの設定を変更します。

$ sudo vi /etc/gdm/gdm.schema
  1. の行になるように変更します。
--- gdm.schemas.org	2010-08-11 00:12:50.000000000 +0900
+++ gdm.schemas	2010-08-11 00:13:42.000000000 +0900
@@ -63,7 +63,7 @@
     <schema>
       <key>security/DisallowTCP</key>
       <signature>b</signature>
-      <default>true</default>
+      <default>false</default>
     </schema>
 
     <schema>
@@ -87,7 +87,7 @@
     <schema>
       <key>xdmcp/Enable</key>
       <signature>b</signature>
-      <default>false</default>
+      <default>true</default>
     </schema>
 
     <schema>


custom.confを変更します。

$ sudo vi /etc/gdm/custom.conf

内容:

[daemon]
RemoteGreeter=/usr/lib/gdm/gdm-simple-greeter

[security]
DisallowTCP=false
AllowRemoteRoot=false

[xdmcp]
Enable=true
DisplaysPerHost=2

[gui]

[greeter]

[chooser]

[debug]

[servers]

最後に、xinetd, gdmを再起動します。

$ /etc/init.d/xinetd restart
$ /etc/init.d/gdm restart
参考サイト

P.S.
再起動したタイミングかわかりませんが、VNCクライントで接続しても、ログイン画面が表示されなくなってしまいました。
どうもバグのようなことが騒がれていますが、よくわかりません。あまりGUIで接続する用途がないので、そのままにしておきます…