VNCを使う
LastUpdate : 08/05/24
サーバにLinux(CentOS5.1 64bit)、クライアントにWindowの環境にて、設定を行った際のメモです。
CentOS5.1にて、通常、あえてvncserverの選択をキャンセルしなければ、インストールされている様子です。
もし無い場合は、yum install vnc-server とすればインストールされる。
ポートフォワーディングを利用して、Windowsクライアントマシンから、CentOSのVNCサーバにアクセスするには、Windows側ではポートフォワーディングを行ってくれるツールが必要です。
私は、普段、リモートホストにアクセスする際、TeraTermを使っています。で、最近のは、TTSSHが同胞(?)されたものが配布されているようです(VectorでDLしたら、普通にはいってた。)
で、こいつの、機能でポートフォワーディングしてもらいます。
vncserverの起動・終了は、自動的に起動するように設定をしていない場合、コマンドラインから行います。
基本的なコマンドは以下のとおりです。
- vncserver -geometry 1024x764 -depth 24
- vncserverを起動し、待ち受け状態にします。geometryの後ろに、画面の解像度を指定します。depthは色深度を指定します(上記のオプションは例です)。
- vncserver -kill :1
- killの後ろの「 :1」だとか「 :2」だとかで、どのvncを終了させるか指定します(番号名はディスプレイナンバー。デフォルトでは5901なら1、5902なら2って感じ)
(1)ファイヤーウォールの設定
サーバーにて、ファイヤウォールを設定してある場合、SSH通信に使うポートをオープンにする必要があります。
(2)vncserverをクライアントの接続を待ち受けるようする。
サーバーにて、コンソールでvncserverと打ち込むと、初回起動時の場合、パスワードを聞かれます。これはクライアントが接続する際、認証に使用されますので、てきとーに適当に入力します。
そして、しばらくまつと、コンソールに制御が帰ってきます。
これで、接続待ちの状態になっています。デフォルトでは、待ち受けポートは5901です(これで、接続サーバが2個になると2個目は5902と使い、3個目は5903・・・となっていくらしい)。
gnomeを使うには(デフォルトではtwmが立ち上がる)自分のホームディレクトリ内の「 ./vnc/xstartup 」ファイルを編集します。
たぶん、最後の行に
twm &
になっています(だから、twmが立ち上がる)。これをgnomeにするには(無論gnomeがインストールされていなければだめです)
#twm &
exec gnome-session &
と、twmをコメントアウトして、gnomeが立ち上がるように変更します(不要ならば、コメントアウト箇所は削除してもOKかと)。
設定を変更したならば、vncserverを再起動します(たぶんvncserverを立ち上げなおさないとだめじゃないかと)。
(3)ポートフォワーディングの設定
●クライアント側の設定
TeraTermでは、メニューの「設定」 → 「SSH転送」 のところから、設定を行います。
するとこんな画面がでてくるので・・・
「追加」ボタンを押下し、以下のよーに入力し、設定を追加します。ローカルのポートのポート番号は特に意味がありません。50000でもなんでも好きな数字を入力します(ただし、vncのクライアントにて、送り先のポート番号と同じにすること)。また、リモート側ホストは、5901とすること(VNCサーバの待ちうけポート番号をいれる)
そして、1枚目の「SSHポート転送」画面にて、「OK」ボタンを押下します。
この画面にて、「リモートサーバのポート」のほうで行う方法もあるらしーのですが、私はやったことないので、割愛させていただきます。
これで、ポートフォワーディングの設定は終了です。
これで、準備は完了です。Teratermは起動したままにしておいてください。
(4)接続してみる
クライアントから接続してみます。
私は、realVNCというソフトをいつも使っています。realVNCはサーバになる機能もあるらしいですが、クライアントとしてしか使ったこと無いです。
VNCViewerを起動し、Serverに「 localhost:1 」を指定し、パスワードを入力します(サーバにて、vncserverを起動した際に、入力したパスワードを入力)。
※Serverの入力エディットボックスの入力フォーマットについて
基本的に ホストアドレス:1 (ホストのアドレス、コロン、1) と入力します(この場合、ポート番号は5901が使用される)。
ポート番号の指定を行いたい場合は ホストアドレス::5941 (ホストアドレス、コロンコロン、5951) という形式で入力を行えばOKらしいよ?。
すると、うまい具合に、デスクトップ画面が表示されるはずです。
xinetd経由で起動させるためまずは設定ファイルを作成します。
/etc/xinetd.d/ の中に、vncserver_xga というファイルを作成します(ファイル名前は自由)
普通のデーモン(?)みたいな感じで動くvncserverは5901などを使うため、かぶらないように5951などを使うこととします。
(1)/etc/servicesファイルの書き換え
プログラムが使用するポート番号を設定します。/etc/servicesファイルに、以下の文字を追加しました(場所はどこでもいいです。一番最後など)。
vncserver_xga 5951/tcp # VNC server (add 08/05/24)
/etc/servicesファイルを保存します。
(2)xinetdにプログラムの登録
/etc/xinetd.d/vncserver_xga |
service vncserver_xga { disable = no socket_type = stream protocol = tcp #port = 5951 wait = no user = nobody server = /usr/bin/Xvnc server_args = -inetd -query localhost -once -geometry 1024x768 -depth 24 --PasswordFile=/etc/vnc_passwd } |
などとします。
(3)パスワードファイルの作成
(2)にて、PasswordFileとして /etc/vnc_passwd ファイルにするよー、と指定したため、vnc_passwdファイルを作成します(ファイル名前は任意)。
[root@wasce_server ~]# vncpasswd /etc/vnc_passwd Password: Verify: |
vncpasswdというコマンドに、保存先ファイル名を指定し、パスワードを入力します。
これで、/etc/vnc_passwdファイルが作成されます。
このパーミッションが700になっている点に注意してください。xinetdで起動するプログラムのユーザ権限で、パスワードファイルが読めないといけないため、パーミッションをてきとーに変更します。
chmod 755 /etc/vnc_passwd
<セキュリティーに問題がある場合、vncの実行ユーザ・パスワードファイルのパーミッションなど、うまい具合に調整してください。>
(4)xinetdの再起動
service xinetd restart
などとして、xinetdを再起動します。
(5)gdmの設定ファイルの変更&起動
gdmの設定ファイルを修正します。CentOS5.1では、/etc/gdm/custom.confです。
/etc/gdm/custom.conf ファイルの中に、
[xdmcp]
となっているところがあるとおもいます。この部分を以下のように加筆します。
[xdmcp]
Enable=true
Enable=trueと1行追加するだけです。
gdmが立ち上がっていない様子ならば(ps aux |grep gdmなどとして何も無かったら)、コマンドラインから、普通にgdmと打ち込むだけで起動する様子です。
[root@wasce_server ~]# gdm [root@wasce_server ~]#
(これが立ち上がってないと、真っ黒な画面しか表示されません。)
ちなみに、gdmのpidが以下のコマンドで表示できます。
[root@wasce_server ~]# cat /var/run/gdm.pid
複数gdmが立ち上がっていたりしますが、このpidでkillすれば全部消えます。
(5)クライアントから接続する
これで、普通に接続すれば、ログイン画面が表示されるはずです。
vncでパスワードを入力し、ログイン画面で、IDとパスワードを入力と、やや面倒ですが^^;
ちなみに、rootでのログインが禁止されていますので、通常ユーザのみログイン可能です。
rootでログイン可能にする方法は・・・あるのかどーか知りませんが、機会があったら^^;
vncserverが自動的に立ち上がるように設定できます。xinetdで起動させるか、こちらの方法をとるか、どちらかでよいと思います。
chkconfig --level 3 vncserver on
以下の設定ファイル編集後、自動起動するように設定しておきます。
まず、設定ファイルの変更を行います。
変更対処のファイルは「 /etc/sysconfig/vncservers 」です。
/etc/sysconfig/vncservers |
# The VNCSERVERS variable is a list of display:user pairs. # # Uncomment the lines below to start a VNC server on display :2 # as my 'myusername' (adjust this to your own). You will also # need to set a VNC password; run 'man vncpasswd' to see how # to do that. # # DO NOT RUN THIS SERVICE if your local area network is # untrusted! For a secure way of using VNC, see # URL:http://www.uk.research.att.com/archive/vnc/sshvnc.html. # Use "-nolisten tcp" to prevent X connections to your VNC server via TCP. # Use "-nohttpd" to prevent web-based VNC clients connecting. # Use "-localhost" to prevent remote VNC clients connecting except when # doing so through a secure tunnel. See the "-via" option in the # `man vncviewer' manual page. # VNCSERVERS="2:myusername" # VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -nohttpd -localhost" |
デフォルトではこんな感じになっていると思います。
これから記述する、設定は、下2行のところのテンプレートにのっとって、以下の2行を下に追加します。
VNCSERVERS="1:root" VNCSERVERARGS[1]="-geometry 1024x764 -depth 24 -nolisten tcp -nohttpd" |
を、最後の行に、追加します(内容は、設定や、接続するユーザによって違います。上記はただの例です)。