2011/01/11 CentOS5.5





VNCをxinetd経由で動作させる(XDM/GDMセッション)



CentOSのVNCサービスの起動には三種類があります。
違いの説明は別ページに掲載します。

VNCを動作させる(解説)

VNCをxinetdサービスとして起動させる流れは、以下のようになります。

1.xinetdをインストールする
2.xinetedにvncを登録する
3.servicesファイルを編集してxinetdで待ち受けるポートを指定する
4.ファイアウォール解放する
5.XDM認証を有効にする
6.設定を有効にするためGDMを再起動
7.VNC接続をする
8.rootアクセスを許可する
9.GDMを有効にする

1.xinetdをインストールする
CentOSはデフォルトではxinetdがインストールされていません。
しかしよく使われるサービスなので、インストールされているか確認しましょう。

#services xinetd status

状態が表示されればインストールされています。その場合は手順2へ進みます。
認識されないサービスなら、xinetdをインストールします。

コマンドではyumを使用します。いくつかの同意をする必要があります。

#yum install xinetd

GUIでインストールする場合は、アプリケーションの追加と削除を使用して、xinetdを検索します。



2.xinetdにvncを登録する
/etc/xinetd.d/vncファイルを作成し、以下の内容を入力します。

service vnc
{
        socket_type     = stream
        wait            = no
        user            = nobody
        server          = /usr/bin/Xvnc
        server_args     = -inetd -query localhost -once -geometry 800x600 -depth 16 -SecurityTypes none
        log_on_failure  += USERID
        disable         = no
}



「SecurityTypes none」を使用しない場合は、アクセス権644のvnc用のパスワードファイルを指定する必要があります。


3.servicesファイルを編集してxinetdで待ち受けるポートを指定する
/etc/servicesファイルを編集し、末尾に以下の行を追加します。

vnc        5900/tcp

ここで指定する「vnc」の文字列は、手順2で指定したファイルの「service vnc」と一致している必要があります。
ポート番号は何でもいいのですが、ここは伝統に乗っ取って5900番としました。



画像では一番下へ行くのがメンドかったので、一番上に追記してます。


4.ファイアウォールを解放する
コマンドがGUIで実施します。GUからの方が簡単でしょう。
[システム]-[管理]-[セキュリティレベルとファイアウォールの設定]を起動します。

その他のポートの追加で5900を追加します。


これでOKですが、この時点でアクセスしても、未だディスプレイに接続されていないので、真っ灰色な画面が表示されるだけです。

ちなみにコマンドから解放する場合はiptablesファイルを編集します。
#vi /etc/sysconfig/iptables

そして一番下のREJECT行の上に、5900番ポートを許可します。

-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 5901 -j ACCEPT



保存した後、iptablesを再起動します。

#service iptables restart

※iptableコマンドで5900番を許可すれば良さそうなものですが、実はうまく行きません。
iptable -Lを実行すればわかりますが、よくあるように
#iptables -A INPUT -p tcp --dport 5901 -j ACCEPT
と入力しても、実際に記述されるのはINPUTテーブルの「RH-Firewall-1-INPUT」の次に追加されます。
つまり評価されません。
ならばと
#iptables -A RH-Firewall-1-INPUT -p tcp --dport 5901 -j ACCEPT
と記述しても、今度は「REJECT」行の次に追加されるので、やはり評価されません。
ファイルを直接記述しましょう。


5.XDM認証を有効にする
/etc/gdm/custom.confを編集します。
[xdmcp]セクションに「Enable=true」を追加します。

[xdmcp]
Enable=true




6.設定を有効にするためGDMを再起動する
コマンドからGDM(GnomeDisplayManager)を再起動します。

# kill -HUP `cat /var/run/gdm.pid`

この手のシステムでよく使われる、そしてよく勘違いされるコマンドです。
「cat /var/run/gdm.pid」の前後をくくっているのは「バッククォーテーション」です。
シフトキーを押しながらアットーマークキーを押して出る文字です。
バッククォーテーションで囲まれたコマンドは、コマンド結果を使用します。
下のようにcatコマンドとkillコマンドを別々に使用しても同じです。

# cat /var/run/gdm.pid
 3350
# kill -HUP 3350

コマンド実行後、数秒するとGDMが再起動します。

7.VNC接続をする
この時点でVNCを接続すると、XDMによる認証画面が表示されます。
見たことのない古臭い画面ですが、このままでも利用できなくもありません。




8.rootアクセスを許可する
しかしrootでアクセスをすると、拒否されます。(見切れてますが)



これを許可するため、再度/etc/gdm/custom.confを編集します。
[security]のセクションに「AllowRemoteRoot=true」を追加します。



再度コマンドからGDMを再起動します。

# kill -HUP `cat /var/run/gdm.pid`

再度VNCで接続すると、今度はrootでログインできます。


9.GDMを有効にする
ここまでくると欲が出てきます。もっと見栄えの良いログイン画面が欲しいです。
つまりデフォルトのGDMです。

さらに/etc/gdm/custom.confを編集します。
[daemon]のセクションに以下の行を追加します。

[daemon]
GtkModulesList=
AddGtkModules=false
RemoteGreeter=/usr/libexec/gdmgreeter



三度GDMを再起動します。

# kill -HUP `cat /var/run/gdm.pid`

VNCで接続すると、麗しいGDMが表示されます。



ログインできることを確認しましょう。



実際、openSUSEやUbuntuのように使用する人にとっては、このアクセス方法が一番しっくりきます。
しかしサーバOSとして多数のユーザがアクセスし分けることを想定していないCentOSにはそぐわないのが、簡単にVNCが利用できない設計思想かもしれません。
サービスとして動作させたり、ユーザプロセスとして動作させる場合はVNCを動作させる(解説)を参照してください。





prev.gif