CentOS5.3にVNCでアクセスできるようにした。

VNCで接続したい、すべての人の参考になれば。
以前にも書いたんですが、もう一回、整理して書いてみます。
CentOS5.2にVNCサーバ環境を構築した。 - rderaログ

初めに

VNCでPCに接続するにはvncserverを起動させておく必要があります。

# /etc/rc.d/init.d/vncserver start
# chkconfig --list vncserver

ただ、この方法はVNCを使わないときでもVNCデーモンが起動している状態であり、
リソースの無駄なんです。
そこで、xinetdを利用してVNCデーモンを起動します。

xinetdとは?

以下に非常に詳しい説明がなされています。
http://www.mukuan.org/security/xinetd.html
簡単に言ってしまえば、デーモンに要求があったときに起動させる仕組みのことです。
それでは、実際に設定をしていきます。

必要なものをインストール

# yum -y install xinetd vnc vnc-server

xinetd経由で提供するサービス名を記述

/etc/servicesを編集する

# vi /etc/services 

以下の記述を追記する。
vnc 5900/tcp # VNC Server

設定ファイルを作成する

/etc/xinetd.d/下に起動ファイルを作る。
起動ファイル名は先程、設定したサービス名と一致させる必要がある。

# vi /etc/xinetd.d/vnc 
service vnc
{
	disable		= no
	socket_type	= stream
	wait		= no
	user		= nobody
	instance	= 3
	server		= /usr/bin/Xvnc
	server_args	= -inetd -query localhost -once -geometry 800x600 -depth 16 -SecurityTypes None
	only_from	= 192.168.24.0/24 127.0.0.1
	log_on_success  += DURATION
	log_on_failure  += HOST
}
disable このサービスをxinetd経由で起動させるか?noで起動。yesで起動しない。
socket_type ソケットタイプの指定。TCPは、「stream」。UDPは「dgram」を指定
wait yes ならシングルスレッド。no ならマルチスレッド
user サービスの実行ユーザを指定
instances 同時にいくつサービスできるかを指定。数字か無制限を表すUNLIMITEDを指定可能
server そのサービスのために実行するプログラムを指定
only_from サービスを可能にするリモートホストを指定。ex)192.168.24.0/24は192.168.24サブネットのすべてのホストに合致
server_args サービスに渡される引数。以下を参照
no_access 使用できないリモートホストを指定
access_times サービスが使用できる時間間隔を指定
log_on_success 起動時と終了時にどの情報をログ出力するか。以下を参照
log_on_failure 起動できなかった場合にどの情報をログ出力するか。以下を参照


log_on_successとlog_on_failureで指定できる値

指定可能なオプション
PID サーバのプロセスID
HOST リモートホストのアドレス
USERID ident(identification) プロトコルを使い、リモートユーザのユーザ ID
EXIT 終了ステータスまたは終了シグナル
DURATION セッションの時間
ATTEMPT 失敗があったこと


sever_argsで指定できる値

-inetd Xvncをinetd経由で起動させる(必須)
-query localhost XDMCP(X Display Manager Control Protocol)を使ってユーザー認証を行う。localhostを指定
-once xsessionが終了した時点でVNCサーバを終了する
-geometry サイズ デスクトップのサイズ。defaultは1024x768
-depth 色数 色数の指定。defaultは16。他に8,15,24を指定可能。
-SecurytyTypes None VNC Passwordはかけない。

XDMCPを許可する

リモートからでも、グラフィカルログインできるようにXDMCP を許可する。
CentOS5.3では/etc/gdm/custom.conf

# vi /etc/gdm/custom.conf

以下の記述をする。

[security]
AllowRemoteRoot=false

[xdmcp]
Enable=true

[gui]

[greeter]
IncludeAll=false
AllowRemoteRoot=false リモートからのrootでのログイン禁止
Enable=true グラフィカルログイン許可
IncludeAll=false ログイン画面でユーザリストを表示しない

設定を反映

# /etc/rc.d/init.d/xinetd restart
# reboot

接続

設定したサーバのポートの5900に接続すると画面が飛んでくる。
MacのChicken of the VNCを使って、接続してみる。

接続。


ハマるところ。

以下注意