トップ «前の日記(2009/11/05(Thu)) 最新 次の日記(2009/11/09(Mon))»
【ソース+水=麦茶色の何か】

半期 四半期 全カテゴリ

今日の一言


2009/11/06(Fri) フライング気味に・・・ [長年日記] 1:00現在 15℃

_ [FC][Ubuntu][Linux][Windows][研究関係][雑記]LinuxにVNCサーバを設定する

安易なVNCの使用は本気で危険なので、自己責任でお願いします。というか、自分のやったことに責任を持てない人はやめた方がいいです。

vinoを使う(Ubuntuの場合)

UbuntuにはデフォルトでVNCサーバ(vino)が入っている。

なので、特にこだわりがなければ、これを使えばいい。

使い方は、

 「システム」→「設定」→「リモートデスクトップ」

で、「共有」の下の

 「他のユーザが自分のデスクトップを表示できる」
 「他のユーザがデスクトップを操作できる」

の両方にチェックを入れるだけ。

ただし、「セキュリティ」の下の

 「このマシンへの接続を毎回確認する」

にチェックが入っていると、毎回サーバ側で許可をする必要があるため、非常に不便。

なので、自分はセキュリティは落ちるが、コレのチェックを外し、代わりに

 「パスワードの入力を要求する」

を有効にしている。(右側のスペースにパスワードを入れる)

「通知スペース」の設定はご自由に。

丁寧なことに、接続するためのアドレスや名前も表示されているので、好みのビューワでそれにアクセスすればリモートで操作できる。

(Ubuntu以外のLinux、というか、ファイアーウォールが動いているOSのためにメモるが、vinoはポート5900番を開ける必要がある)

かなり使い勝手がいいが、こちらの操作に合わせてサーバ側の画面も連動して動くため、やや重め。

また、複数のユーザが入ったり、ログイン画面から起動ができないのが不便。

vnc4serverを使う

vinoとはちょっと使用用途が違う感じのするVNCサーバ。

Ubuntuの場合
 $ sudo apt-get install vnc4server

でインストールし、パスワードを設定。

 $ sudo vncpasswd

なにも引数を与えなかった場合、パスワードは

 HOME/.vnc/passwd

に保管される。

で、実行。

 $ vncserver

しばらくすると何やらメッセージが出てくる。

ここで注目すべきは最後の行。

 Log file is /home/?????/.vnc/ubuntu???:1.log

と出ていた場合、":1"というディスプレイを使ってVNCが起動したことを示している。

これで、VNCビューワから接続できる。

*設定によっては、~/.vncがrootの所有になっている場合がある。 その場合は一般ユーザでvncserverが立てられないため、

 $ sudo chown -R {username} ~/.vnc

で所有者を自分にしておく({username}はユーザ名で置き換えること)

閑話休題。

このままだとウィンドウマネージャがtwmなので使いづらい。

というか、自分の環境だと表示できなかった。

なので、vncserverのXの設定ファイル(~/.vnc/xstartup)を(各ユーザ毎に)若干書き換える。

(~/.vnc/xstartupは一度vncserverを起動させていないと生成されないっぽいので注意)

# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

を、

# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
/bin/sh /etc/X11/xinit/xinitrc
exit $?

に変更。

もしくは、

 $ cd ~/.vnc
 $ mv ./xstartup xstartup_bak
 $ ln -s /etc/X11/Xsession xstartup

とすれば現在自分が使っているXの設定をそのまま使えるので、どちらを使うかはお好みで。

FCの場合
 # yum install vnc vnc-server

でインストールし、パスワードを設定。

 # vncpasswd

なにも引数を与えなかった場合、パスワードは

 HOME/.vnc/passwd

に保管される。

<!!ココから!!>

/etc/sysconfig/vncserversを以下のように変更

  1. VNCSERVERS="2:myusername"
  1. VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -nohttpd -localhost"

VNCSERVERS="1:root"

VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -nohttpd"

<!!ココまでは、別になくてもよさそう?!!>

で、実行。

 $ vncserver

しばらくすると何やらメッセージが出てくる。

ここで注目すべきは最後の行。

 Log file is /home/?????/.vnc/ubuntu???:1.log

と出ていた場合、":1"というディスプレイを使ってVNCが起動したことを示している。

これで、VNCビューワから接続できる。

*設定によっては、~/.vncがrootの所有になっている場合がある。 その場合は一般ユーザでvncserverが立てられないため、

 # chown -R {username} ~/.vnc

で所有者を自分にしておく({username}はユーザ名で置き換えること)

閑話休題。

このままだとウィンドウマネージャがtwmなので使いづらい。

なので、vncserverのXの設定ファイル(~/.vnc/xstartup)を(各ユーザ毎に)若干書き換える。

FCの場合は、単純にコメントから出して

# Uncomment the following two lines for normal desktop:
unset SESSION_MANAGER
exec /etc/X11/xinit/xinitrc

にするだけでいい。

(/etc/X11/xinit/xinitrcの実行権の問題らしい)

*vncサーバ用ポート5901を許可する

GUIで設定してもいいが、/etc/sysconfig/iptablesに以下の一文を追加し、

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

再起動してもいい。

 # /etc/init.d/iptables restart

*VNC Viewerで開いた場合に、

GNOME 設定デーモン (gconfd) を起動する際にエラーが発生しました。〜

というエラーが出る場合、

 # yum install dbus-x11

を行えば解決できる。

vnc4serverをログイン画面から有効にする

先ずはxinetdをインストール。

 $ sudo apt-get install xinetd

んで、xinetdを使ってvnc4serverを起動させるために、/etc/xinetd.d/xvncを設定。

service xvnc
{
disable = no
socket_type = stream
wait = no
user = nobody
group = tty
server = /usr/bin/Xvnc
server_args = -inetd -geometry 1280x1024 -depth 24 -query localhost -once PasswordFile=/etc/vnc_passwd -extension XFIXES
}

サービスとして起動させるため、/etc/servicesに以下の記述を追加。

 xvnc 5901/tcp # VNC Server

これで5901ポートでVNCサーバが動くようになる。

で、/etc/xinetd.d/xvncに書いたように、パスワードの場所としてデフォルト以外の場所を指定したので、パスワードを設定しなおす。

 $ sudo vncpasswd /etc/vnc_passwd

さらに、/etc/xinetd.d/xvncに書いた通りに所有者とグループを変更する。

 $ sudo chown nobody.tty /etc/vnc_passwd

さらに、リモートからのログインができるように、/etc/gdm/gdm.conf-customの[xdmcp]の下にEnable=trueに書き換える。

(これはGUIで「設定」→「ログイン画面」からでも設定できる)

[xdmcp]
Enable=true

これで(サービスの)再起動後は、/etc/servicesに設定したポート(5901番ポート)にアクセスすればリモートで操作できるはず。

サーバを停止するには

 $ vncserver -kill :1

のように、

 $ vncserver -kill [ウインドウ番号]

とすればOK。

ビューワを入れる

「Ultr@VNC」とか「RealVNC」とか、いろいろあるので自分の好きなのを選べばOK。

基本的にはどれからでもつながるはず。

Good luck.