2011/01/11 CentOS5.5





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



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

VNCを動作させる(解説)

VNCをユーザプロセスとして動作させる流れは、以下のようになります。

1.vncserverを起動する
2.ファイアウォールを解放する
3.VNCでアクセスする
4.xstartupを編集する
5.vncserverを再起動する

1.vncserverを起動する
コマンドから「vncserver」を実行します。

#vncserver

するとVNCの設定ファイルの生成とともに、VNCパスワードを求められます。
このパスワードがデスクトップセッションへの接続パスワードになりまるので、重要です。6文字以上必要です。



後からパスワードを変更する場合はvncpasswdコマンドを使用します。
何度もvncserverコマンドを実行すると、そのたびにvncserverプロセスが増えていって、ディスプレイ番号と待ち受けポートが使用されていきますので注意してください。
手順5のvncserverの終了方法を参照してください。

2.ファイアウォールを解放する
コマンドかGUIで実施します。GUIのほうが簡単です。

GUIで実施する場合は、[システム]-[管理]-[セキュリティレベルとファイアウォールの設定]を起動します。
その他のポートに「5901」を追加します。



なぜ5901かと言うと、手順1の画像にあるように「localdomain: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」行の次に追加されるので、やはり評価されません。
ファイルを直接記述しましょう。

3.VNCでアクセスする
VNCクライアントから「ホスト名:5901」、もしくは「ホスト名:1」と指定して接続します。
手順1で指定したVNCパスワードを入力し、接続するとびっくります。



古臭いウィンドウシステム、twmが起動します。
現代人には耐えられません。

4.xstartupを編集する
twmをやめ、現代的なGNOMEを使用すべきです。
カレントディレクトリ以下にある「~/.vnc/xstartup」ファイルを編集します。
twmが起動している行とxtermの行をコメントアウトし、代わりにGnomeが起動するよう「gnome-session」を追加します。




5.vncserverを再起動する
現在起動しているvncserverを停止します。その時、ディスプレイ番号「:1」を指定します。
再度vncserverを起動させます。

#vncserver -kill :1
#vncserver

もしいくつvncが起動しているか分からない場合はコマンド「ps -ax | grep vnc」で検索して調べます。

再度VNCクライアントからアクセスすると、GNOMEが表示されます。



なお、ログオフしないようにしましょう。クライアントからはVNCウィンドウを閉じるだけです。
ログオフしてしまうとデスクトップセッションが終了してしまい、再度vncserverをkillして実行する必要があります。



この手順は一時的にVNCを稼働させる方法です。
システムを再起動したり、毎回ログオン時にvncserverコマンドを実行するのが面倒なら、カレントの「.bashrc」ファイルにvncserverコマンドを追記しておきましょう。

さらに恒常的にかつ安定的にVNCでアクセスするというのなら、サービスとして登録しましょう。
ログインセッションを使用して、ログインユーザを使い分けたり、OSのユーザ認証を使用するのならxinetdで設定しましょう。
VNCを動作させる(解説)を参照してください。





prev.gif