VNC(Virtual Network Computing)は、リモートデスクトップを実現するクロスプラットフォームのソフトウェアである。VNCサーバが動作するOS(Windows CE/98/Me/2000/XP/2003、Linux、Solaris)をVNCクライアントが動作するOS(Windows CE/98/Me/2000/XP/2003、Linux、Solaris、Javaが作動する全てのOS、μVNCやiVNCは携帯用)から遠隔操作することができる。
す
この方法では、接続要求が発生するごとにメモリーを消費するので経済的です。この方法では、接続するとログイン画面表示されるので、ユーザーとパスワード入力してログインします。
ルートのログインを許可することも可能ですが、標準の設定ではそのようにはなっていないのでおすすめはしません。
スーパーサーバー(xinetd)のパッケージをインストールする。
# yum install xinetd
リモートデスクトップ(vnc)のパッケージをインストールする。¥¥
# yum install vnc vnc-server
サービスのポートを指定するために、以下の設定ファイルを修正する。
/etc/services (行追加)
vncserver 5900/tcp # VNC Server
スーパサーバーが起動するプログラムを設定するために、以下の設定ファイルを作成する。
/etc/xinetd.d/vncserver (ファイル作成)
service vncserver
{
disable = no
nice = 10
flags = REUSE
socket_type = stream
wait = no
user = nobody
server = /usr/bin/Xvnc
server_args = -inetd -query localhost -once -geometry 1600x960 -depth 16 --securitytypes=none
log_on_success += DURATION
log_on_failure += HOST
}
注意:
service vncserver の部分は /etc/services に追記したサービス名と一致していなければならない。
画面サイズ 1600×960 はお好みに応じて変更してください。
vnc のパスワードファイルを作成する。
# vncpasswd /etc/vncserver_passwd
Password: <-- パスワードを入力
Verify: <-- パスワードを入力
Xvnc がパスワードファイルを参照できるようにパーミッションを設定する。
# chmod 644 /etc/vncserver_passwd
GDM(Gnome Display Manager)の設定を変更するために、以下の設定ファイルを修正する。
/etc/gdm/custom.conf (該当セクションに以下の内容を追記)
[daemon]
RemoteGreeter=/usr/libexec/gdmgreeter
[xdmcp]
Enable=true
おすすめしないが、管理者ログインを許可したいのなら以下の設定を追加する。
[security]
AllowRemoteRoot=true
Fedoraの場合は以下のように修正する。
[security]
DisallowTCP=false
[xdmcp]
Enable=true
サービスのポートをファイヤウォールで許可するために、以下の設定ファイルを修正する。
/etc/sysconfig/iptables (行追加)
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5900 -j ACCEPT
OS 起動時にスーパーサーバーが自動起動するように、以下のコマンドを実行する。
# chkconfig xinetd on
設定の変更を反映させるために、以下のコマンドを実行する。
CentOS6、Fedoraの場合
# restart prefdm
# service xinetd restart
# service iptables restart
CentOS 5 の場合はrestart prefdmではなく以下を実行する。
# gdm-restart
# service xinetd restart
# service iptables restart
クリップボードを共有するために、ユーザーがログオンした際に以下のコマンドが自動実行されるように設定する。
メニューより [システム]-[設定]-[他の個人設定]-[セッション] を開いて、自動起動するプログラムに以下のコマンドを追加する。
vncconfig -nowin
CentOS 6で以下のようなトラブルが発生する場合:
解決方法:
/etc/X0.hosts を作成してホスト名を追加する。
※”green.fireball.local:1.0” の場合は X1.hosts のようにディスプレイ番号に応じて作成する必要がある。
# vi /etc/X0.hosts
/etc/X0.hosts の内容
localhost
prefdm を再起動する。
# restart prefdm
CentOS 5で以下のようなトラブルが発生する場合:
解決方法:
/etc/X0.hosts を作成してホスト名を追加する。
※”green.fireball.local:1.0” の場合は X1.hosts のようにディスプレイ番号に応じて作成する必要がある。
# vi /etc/X0.hosts
/etc/X0.hosts の内容
green.fireball.local
gdm を再起動する。
# gdm-restart
リモートサーバーに接続して長時間処理などを実行しておきたい場合は、Xvnc のセッションが保持されるように設定しておくと便利である。
以下では前述の設定に追記することを前提に説明する。
セッション保持用のサービスのポートを指定するために、以下の設定ファイルを修正する。
/etc/services (行追加)
vncsrvkeep01 5901/tcp # VNC Server(keep session 01)
vncsrvkeep02 5902/tcp # VNC Server(keep session 02)
vncsrvkeep03 5903/tcp # VNC Server(keep session 03)
vncsrvkeep04 5904/tcp # VNC Server(keep session 04)
vncsrvkeep05 5905/tcp # VNC Server(keep session 05)
スーパサーバーが起動するプログラムを設定するために、以下の設定ファイルを修正する。
/etc/xinetd.d/vncserver (設定追加)
service vncsrvkeep01
{
disable = no
nice = 10
flags = REUSE
socket_type = stream
wait = yes
user = nobody
server = /usr/bin/Xvnc
server_args = -inetd -query localhost -once -geometry 1600x960 -depth 16 --PasswordFile=/etc/vncserver_passwd
log_on_success += DURATION
log_on_failure += HOST
}
service vncsrvkeep02
{
disable = no
nice = 10
flags = REUSE
socket_type = stream
wait = yes
user = nobody
server = /usr/bin/Xvnc
server_args = -inetd -query localhost -once -geometry 1600x960 -depth 16 --PasswordFile=/etc/vncserver_passwd
log_on_success += DURATION
log_on_failure += HOST
}
service vncsrvkeep03
{
disable = no
nice = 10
flags = REUSE
socket_type = stream
wait = yes
user = nobody
server = /usr/bin/Xvnc
server_args = -inetd -query localhost -once -geometry 1600x960 -depth 16 --PasswordFile=/etc/vncserver_passwd
log_on_success += DURATION
log_on_failure += HOST
}
service vncsrvkeep04
{
disable = no
nice = 10
flags = REUSE
socket_type = stream
wait = yes
user = nobody
server = /usr/bin/Xvnc
server_args = -inetd -query localhost -once -geometry 1600x960 -depth 16 --PasswordFile=/etc/vncserver_passwd
log_on_success += DURATION
log_on_failure += HOST
}
service vncsrvkeep05
{
disable = no
nice = 10
flags = REUSE
socket_type = stream
wait = yes
user = nobody
server = /usr/bin/Xvnc
server_args = -inetd -query localhost -once -geometry 1600x960 -depth 16 --PasswordFile=/etc/vncserver_passwd
log_on_success += DURATION
log_on_failure += HOST
}
注意:
service vncsrvkeep01~05 の部分は /etc/services に追記したサービス名と一致していなければならない。
画面サイズ 1600×960 はお好みに応じて変更してください。
vnc のパスワードファイルを作成する。
# vncpasswd /etc/vncserver_passwd
Password: <-- パスワードを入力
Verify: <-- パスワードを入力
Xvnc がパスワードファイルを参照できるようにパーミッションを設定する。
# chmod 644 /etc/vncserver_passwd
サービスのポートをファイヤウォールで許可するために、以下の設定ファイルを修正する。
/etc/sysconfig/iptables (行修正)
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5900:5905 -j ACCEPT
設定の変更を反映させるために、以下のコマンドを実行する。
# gdm-restart
# service xinetd restart
# service iptables restart
Fedoraの場合はgdm-restartではなく以下を実行する。
# restart prefdm
この方法では、ユーザー1人につきポート5901より1ポートを消費します。また、VNCSERVERARGSの定義数が増えるとメモリーを多く消費します。
/etc/sysconfig/vncservers の以下の箇所を参考に最終行に設定を追加
# VNCSERVERS="2:myusername"
# VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -nohttpd -localhost"
VNCSERVERS="1:tomoyan 2:hogehoge"
VNCSERVERARGS[1]="-geometry 1024x768 -nolisten tcp -nohttpd"
VNCSERVERARGS[2]="-geometry 1280x1024 -nolisten tcp -nohttpd"
-localhost オプションが指定されているとリモートから接続することができないので注意。
VNCSERVERS="ディスプレイ番号: ユーザ名"
VNCSERVERARGS[ディスプレイ番号]="-geometry 1024x768 -nolisten tcp -nohttpd"
$ su - tomoyan
パスワード:
$ vncpasswd
Password:
Verify:
$ su - hogehoge
パスワード:
$ vncpasswd
Password:
Verify:
$ su -
パスワード:
# service vncserver start
VNC サーバー を起動中: 1:tomoyan
VNC サーバー を起動中: 2:hogehoge
~省略~
VNCサーバが起動すると以下の設定ファイルが作成されるので設定を変更する。
/home/tomoyan/.vnc/xstartup
#vncconfig -iconic &
vncconfig -nowin &
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
# twm & → 最終行の twm & をコメントアウト
gnome-session & # → gnomeを起動するように変更
/home/hogehoge/.vnc/xstartup も同様に修正する。
VNCサーバを再起動すると設定が反映される。
# service vncserver restart
VNCサーバを利用するには以下のポートの開放が必要である。
tcp port 5900 マシン コンソールに接続する場合
tcp port 5901 ディスプレイ番号:1 に接続する場合
tcp port 5902 ディスプレイ番号:2 に接続する場合
...