|
VNCサーバーの設定 |
2010年6月25日(金) | 2010年6月27日(日)更新 |
他のコンピュータからデスクトップを使ってコンピュータの操作ができるようVNCサーバー機能を設定します。またxinetdを使った起動設定も施します。 |
さらにinetdと組み合わせることにより、単独のVNCサーバーよりさらに使いやすいVNCの設定ができます。
VNCサーバーは最初から使うつもりでしたのですでにインストールしてあります。
VNCサーバーの設定
最初に使用するスクリーン番号を決めます。
私のサーバー機は2つのスクリーン(ディスプレイ)が使えるようになっているので、通常の設定なら0と1が使われます(1つしか使ってないけど)。2以降、ここでは3とします。
/etc/sysconfig/vncservers に以下を加えます。
VNCSERVERS="3:vncuser"
VNCSERVERARGS[3]="-geometry 1280x1024"
…3はスクリーン番号、vncuserはログオンするユーザ名。
…サイズ(geometry)はVNCに使うPCのスクリーンで充分表示可能な値。1ランク下のサイズがやりやすい。
vncuserはすでにシステムにユーザ登録され、ホームディレクトリがあることが必要です。
ただし実際のサーバー側でログオンするユーザ名と同じユーザ名を使うとVNC側からも同じデスクトップ設定やセッション情報が使われ、おかしな干渉をすることがあります。とくに解像度の異なるスクリーンを使う場合にはVNC専用のユーザを設定してそれを使った方がいいです。
さらには両方で同時に同じユーザでログインすると最悪クラッシュすることがあります。(OSやソフトのバージョン、あるいは他の設定による? CentOS5.5では今のとこだいじょうぶだが、Vine4.2では時折起こる。)
ユーザvncuserでshを起動して
$vncpasswd
パスワードを2回打ち込み、ユーザ登録は完了です。
設定する内容は主に日本語入力とデスクトップの起動設定です。
~/.VNC/xstartup を編集しますが、システムディフォルトの設定とデスクトップ(GNOME)を使うなら、設定ファイルの上の方の
# Uncomment the following two lines for normal desktop: に従い
以下2行の# をはずして
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc
とするだけでいいかもしれません。(私はGNOMEは使わないので詳しくはわかりません。)
その前にいったん本体のほうでvncuserのデスクトップをざっと設定し、echo $変数名で環境変数 LANG, XMODIFIERS, GTK_IM_MODULE, QT_IM_MODULE の値を調べておきます。
(日本語の環境変数など。envコマンドで確認しそれらしいのを。)
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
# 以下2項目は無効化
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &
# 日本語関係の環境変数の設定
# 日本語がちゃんと扱えれば無理に設定する必要はないが(たぶん必要)。
# サーバー本体のデスクトップで端末を開き、env で調べた値で日本語環境に関連していそうなの。
export LANG="ja_JP.utf-8"
export XMODIFIERS="@im=SCIM"
export GTK_IM_MODULE="scim-bridge"
export QT_IM_MODULE="scim"
# 日本語入力デーモンとデスクトップの起動
scim -d & …環境変数で設定したIMを起動
exec startkde …gnomeを起動するなら exec gnome-session
# service vncserver restart
# chkconfig vncserver on
また、xfs(フォントサーバー:xorg-X11-xfs)も動いてなくてはいけませんので確認しておきます。
# chkconfig --list xfs
ファイアウォールの設定
そうでなければポート番号は5900+スクリーン番号となりますので、今回は5903。
/etc/sysconfig/iptables に
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5903 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 5903 -j ACCEPT
を加えます。(ただしこれはRedHat系Linuxの場合。また必要がなければインターネットからの接続は許可しないほうがいいとは思います。)
ファイアウォール再起動
#service iptables restart
つないでみる
起動して、「サーバーのアドレス:スクリーン番号」を打ち込み[Enter]します。
192.168.1.5:3 [Enter]
パスワードを入力し、[Enter]
サーバーマシンのデスクトップと同じデスクトップが表れます。
まったく同様に操作できますが、日本語入力の切替は[半角/全角]キーは使えないようで(windows側で処理されてしまうのかな?)、[Ctrl]+[Space]で行います。
終了するにはそのままVNCビューアのウィンドウを消してしまいます。へたにログアウトしたりするとvncserverが動いている間その状態が維持され、vncserverを再起動しないと再びログインできません。
inetdからの起動
1) | 常にvncserverが稼動しており、リソースのむだ。 (いったん使って接続を切っても必ずしもすべてのリソースが開放されない。) |
2) | うっかりログアウトしてしまうとvncserverを再起動しないと再度ログインできない。 |
3) | 使用するデスクトップ(GNOME、KDE)が固定化されている。 |
CentOSにはxinetdというinetサーバーがあるのでこれを使います。
先に行ったvncserverの設定はすべてそのまま使います。
xinetdで起動するには、まず/etc/servicesにサービスの名前とポートが登録されていなくてはなりませんので、
/etc/servicesに(わかりやすいように頭のほうにでも)
vnc-server 5903/tcp
vnc-server 5903/udp
を書きます。
5903は先に設定したポート(5900+スクリーン番号)。
名前 vnc-serverは他とダブらずわかりやすければ何でもいいです。
次に/etc/xinetd.dにvnc-serverというファイルをつくり、以下を記入します。
{
disable = no
flags = REUSE
socket_type = stream
wait = no
server = /usr/bin/Xvnc
user = vncuser
server_args = -inetd -query localhost -once -geometry 1280x1024 -PasswordFile=/home/vncuser/.vnc/passwd …server_argsの記述は一行で
log_on_success += DURATION
log_on_failure += HOST
}
server_args = -inetd -query localhost -once -geometry 1280x1024 -SecurityTypes=none …server_argsの記述は一行で
またCentOSのログインマネージャーは標準はgdmで変えていませんので、これにも設定を施します。
/etc/gdm/custom.conf の[security]と[xdmcp]のところを
[security]
DisallowTCP=false
AllowRemoteRoot=false …あえてrootログインをしたければtrue
[xdmcp]
Enable=true
として保存。
今度はVNCサーバーは常時動いている必要はありません。inetdから自動的に起動されます。
さらに
#chkconfig vncserver off
#chkconfig xinetd on
とします。
以上の設定を有効にするためマシンを再起動します。
いつもどおりつないで確認、OK。
KDEもGNOMEも使えますし、ログアウトすればそのまま終了して次回また新規ログインができます。
なお、フルカラーを使いたいならvne-serverのserver_argsに
... -geometry 1280x1024 -depth 24 ... 等を追加します。(ディフォルトは16のようです。)
左のディスプレーはサーバーで右のノートパソコンをVNCでサーバーにつないでいる。
ノートパソコンからはサーバーを直に扱っているのと同じように表示や操作ができる。
(注)今回テストのため同じユーザでログインして同じデスクトップを使っていますが、ときにへんな干渉を起こすことがあり、同じユーザでやるのは推奨しません。