2011/01/11 CentOS5.5





VNCをサービスとして動作させる(デスクトップセッション)



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

VNCを動作させる(解説)

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

1.sysconfigにvncserver接続のパラメータを記述する
2.vncpasswordを設定する
3.vncserverを起動する
4.デフォルトのウィンドウマネージャがtwmなので修正する
5.vncserverを再起動する
6.ファイアウォールを解放する
7.別の端末からVNCで接続する

1./etc/sysconfig/vncserversを図のように編集する
VNCSERVERS="1:root"
VNCSERVERARGS[1]="-geometry 800x600 -nolisten tcp -nohttpd"

VNCSERVERSの値に、ディスプレイ番号1とrootのデスクトップセッションへ接続するように記述します。
VNCSERVERSARGSにディスプレイ番号1のサーバの設定情報を入力しています。
デフォルトからlocalhostなども削除してあります。



2.vncpasswordを設定する
コマンドから

#vncpasswd

と入力し、rootデスクトップセッションへ接続するためのVNC接続用パスワードを設定します。
~/.vnc/passwdファイルが生成されます。
VNCサービスはパスワードが設定されていないと起動しません。

なお、/etc/sysconfig/vncserversファイルのVNCSERVERARGSに「-SecurityTypes none」が設定されている場合は接続時にパスワードが問われなくなります。
ただしVNCの起動に相変わらずパスワードファイルは必要です。vncpasswdで生成しておく必要があります。



3.vncserverを起動する

コマンドからvncserverを起動し、自動起動に設定します。

#services vncserver start
#chkconfig vncserver on

これにより、~/.vncの下にデスクトップセッション用のVNCの設定情報が書き込まれます。



4.デフォルトのウィンドウマネージャがtwmなので修正する
~/.vnc/xstartupファイルを編集します。
最終二行をコメントアウトし、gnome-sessionを追記します。


もちろんtwmでなにも困らない人は、編集する必要がありませんとも。

5.設定を再読み込みさせるため、vncserver を再起動する
vncserverを再起動します。
#services vncserver restart


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

[その他のポート]に5901番を追加します。


これでOKです。
なぜ5901かと言えば、手順1で指定したディスプレイ番号にVNCのデフォルトポート5900を加えた数字をポート番号として利用するという暗黙の了解があるからです。

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

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

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


画像では5900になってますが、5901を記述します。
保存した後、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」行の次に追加されるので、やはり評価されません。
ファイルを直接記述しましょう。

7.別の端末からVNCで5901番ポートへ接続する
VNCパスワードの入力後、rootのデスクトップが表示されます。



なお、この接続の場合はログオフしてはいけません。
デスクトップセッションのGNOMEが終了してしまい、VNCServerを再起動しないと次のVNC接続ができなくなります。
ここではウィンドウを閉じるのが正しい操作です。



GNOMEのログイン画面を使用したい場合は、xinetdを使用しましょう。
VNCを動作させる(解説)を参照してください。





prev.gif