今日の一言
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を以下のように変更
- VNCSERVERS="2:myusername"
- 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.