mieki256's diary



2005/08/19(金) [n年前の日記]

#12 [vine] VNCをインストール

Windows から Linux を、あるいは、Linux から Windows を、あるいは、Windows から Windows を遠隔操作できるソフト。

妹のノートPCは WinMe が動いてるせいか GIMP が起動しない。ので、最悪 Linuxサーバに vnc を使ってアクセスして利用できるようにならないかと。速度は遅いだろうけど。一応「お試し」ぐらいはできるだろうと。

Windows側のインストールと起動 :

ブラウザでもアクセスできるらしいけど、表示色が少ない等不便なところもあるので、専用ビューワを使ったほうがよさげ。

一応、Linux側は設定済みという前提で。

VNCビューワをDL・インストールする。 _RealVNC のサイトから辿っても取得できるけど。 _RealVNC日本語インストール版 があるらしいので、せっかくだから日本語版をインストール。

後は、VNCビューワを起動して、「サーバ名:1」とか「サーバ名:2」とか入力して、パスワード入力をすればOK。ちなみに、サーバ名の後ろの番号はディスレプレイ番号。VNCサーバが何番で待ってるかで違ってくる。

ウインドウを閉じれば接続も切れる、のかな。

Javaが動くブラウザを使っているならブラウザからアクセスすることもできるらしい :

http://ホスト名:5800+ディスプレイ番号/
にアクセスするのだとか。

例えば、
  • ホスト名 = hoge
  • ディスプレイ番号 = 1
だったら、
http://hoge:5801/
となるし。
  • ホスト名 = fuga
  • ディスプレイ番号 = 2
だったら、
http://fuga:5802/
になるらしい。

Linux側のvncserverインストール・起動・終了 :

ここから先はサーバ管理者の仕事。

インストール。
# apt-get install vnc-server

とりあえず、Linux側で vncserver 起動。putty等を使って ssh でアクセス中に打ち込んでみる。
$ vncserver :1
最初の起動時はパスワードを尋ねてくる。

画面の大きさや色のモードを指定するときは、
$ vncserver -geometry 992x704 -depth 24 -pixelformat RGB888 :1
といった感じにするらしい。与えてるオプションの意味は、
-geometry 992x704
画面サイズ。
-depth 24
色のモード(8,16,24)。
-pixelformat RGB888
サーバが使用するピクセルフォーマット。RGBnnn or BGRnnn。~/.vnc/ 内のログを見たら、サーバとクライアントで合ってなかったみたいなので、指定してみたり。
ちなみにこのサイズ(992x704)は 1024x768 のデスクトップで使ってるときにイイ感じなサイズ、という噂(?)。

vncserver 終了方法。
$ vncserver -kill :1

長々と打ち込むのが面倒なときは、~/.bashrc に alias でも書いておく。
alias vncstart='vncserver -geometry 992x704 -depth 24 -pixelformat RGB888 :1'
alias vncstop='vncserver -kill :1'
次回ログイン時に修正内容は有効になるけど、修正後の ~/.bashrc の変更をログアウトせずに反映させたいときは、
$ source ~/.bashrc
と打つ。

これで、
$ vncstart
$ vncstop
で起動・終了ができる。

でも、一々こういうことをするのも面倒。vncビューワでアクセスしたら自動的に起動するようにしたい。たしか inetd がどうとか…。今後の課題。

vncサーバ側の設定 :

~/.vnc/xstartup に書くことで何をどう表示するか指定できる…らしい。/etc/X11/xinit/xinitrc が参考になる模様。というか。
$ cp ~/.vnc/xstartup ~/.vnc/xstartup.orig20050819
$ cp /etc/X11/xinit/xinitrc ~/.vnc/xstartup
こうやって丸々コピーしちゃってもいいような気も。

/etc/hosts.(allow|deny) に以下を追加して、利用制限をつける…らしい。

/etc/hosts.deny に追加。
Xvnc: all
これで、基本的には vncserver ≒ Xvnc がどこからも使えない状態になる、はず。その上で使える条件を指定していく。

/etc/hosts.allow に追加。
sshd: localhost 192.168.1.0/255.255.255.0
Xvnc: localhost 192.168.1.0/255.255.255.0
これで 192.168.1.x の IP からは使える状態になる。のかな。たぶん。

inetd起動を設定 :

_2005/02/11 にcoLinuxの設定で似たようなことをやってたので参考にしつつ作業。

/etc/services に追加。
vnc-1152x864x24     5950/tcp
vnc-1152x864x8      5951/tcp
vnc-1024x768x24     5952/tcp
vnc-1024x768x8      5953/tcp

/etc/inetd.conf に追加。(ただし、これは失敗例。)
vnc-1152x864x24 stream tcp nowait nobody /usr/sbin/tcpd /usr/bin/Xvnc -inetd -query localhost -once -geometry 1152x864 -depth 24 -pixelformat RGB888
vnc-1152x864x8  stream tcp nowait nobody /usr/sbin/tcpd /usr/bin/Xvnc -inetd -query localhost -once -geometry 1162x864 -depth 8 -cc 3
vnc-1024x768x24 stream tcp nowait nobody /usr/sbin/tcpd /usr/bin/Xvnc -inetd -query localhost -once -geometry 992x704 -depth 24 -pixelformat RGB888
vnc-1024x768x8  stream tcp nowait nobody /usr/sbin/tcpd /usr/bin/Xvnc -inetd -query localhost -once -geometry 992x704 -depth 8 -cc 3

gdm と xvfb(XOrg-Xvfb) をインストール。ちなみに、gdm は既に入ってた。(Vine 3.1 の場合) また、xvfb は要らないかもしれず。
# apt-get install gdm XOrg-Xvfb

/etc/X11/gdm/gdm.conf を修正。
[daemon]
KillInitClients=false
[xdmcp]
Enable=true

inetd 再起動。
/etc/rc.d/init.d/inet restart

という感じでやってみたのだけど。上手くいきませぬ。Win側のビューワを起動して「ホスト名:50」を打っても、ユーザ名の入力欄はグレー。パスワードしか尋ねてこない。しかも、パスワードを打ってもアクセスできないと言われる。本来ここで gdm が出てこないといかんはずだけど…。

/etc/inittab を修正して、RunLevel 5(グラフィカルログイン)でOSを起動してみた。相変わらずダメ。

情報を探してるうちに、 _VNC 3.Xを使用している場合は「-SecurityTypes None」オプションはいらない という話を見かけた。「3.X は要らない」ということは、「4.X では要る」ということかしら。 _VNC覚書(VineLinux3.0(inetd起動用)) というページには、vnc認証に関連するオプション、と書いてある。

/etc/inetd.conf への記述の中で、
-securitytypes none
をそれぞれつけてみた。こんな感じの記述に。(これでもまだ足りない。)
vnc-1152x864x24 stream tcp nowait nobody /usr/sbin/tcpd /usr/bin/Xvnc -inetd -query localhost -once -geometry 1152x864 -depth 24 -pixelformat RGB888 -securitytypes none
vnc-1152x864x8  stream tcp nowait nobody /usr/sbin/tcpd /usr/bin/Xvnc -inetd -query localhost -once -geometry 1162x864 -depth 8 -cc 3 -securitytypes none
vnc-1024x768x24 stream tcp nowait nobody /usr/sbin/tcpd /usr/bin/Xvnc -inetd -query localhost -once -geometry 992x704 -depth 24 -pixelformat RGB888 -securitytypes none
vnc-1024x768x8  stream tcp nowait nobody /usr/sbin/tcpd /usr/bin/Xvnc -inetd -query localhost -once -geometry 992x704 -depth 8 -cc 3 -securitytypes none

inetd 再起動。
/etc/rc.d/init.d/inet restart

RunLevel 5、かつ、この指定なら、Win側のビューワでアクセスした際に gdmらしきログイン画面が出てくる。これで正解なのかしら?

/etc/inittab を修正して、RunLevel 3(テキストログイン)でOSを起動後、Win側からアクセスしてみた。これはダメ。テキストログインにするとダメか。

/etc/X11/gdm/gdm.conf を修正して、/usr/bin/X11/Xvfb を使うように指定してみた。これもダメ。

要するにあらかじめgdmが起動してないからダメってことかも :

RunLevel 5(グラフィカルログイン)の場合、既にgdmが起動してるから上手くいくのだろうな。

となると、どうやって事前に gdm を起動しておくかという話になるけれど。少なくとも coLinux + Debian の設定をしてたときは、標準でコンソールしか表示されてないのに gdm を起動させておくこともできたわけだから…。何か手はありそうな気もする。

別の方法…vncserverをサービスとして起動しておく方法も試してみたり :

/etc/sysconfig/vncservers に追加。
VNCSERVERS="1:hoge 2:fuga"
ディスプレイ番号1をユーザ hoge に、番号2をユーザ fuga に割り当てる。

サービスとして起動。及び、登録。
# /etc/rc.d/init.d/vncserver start
# chkconfig vncserver on

「ホスト名:ディスプレイ番号」でアクセスすれば、使える。けど。このやり方だと使わないときですら常時 X が裏で動いてるように見える。よろしくない。使うときだけ存在してほしいのだけど。

グラフィカルログインでも構わんか :

今までずっとテキストログインにしてたからそれでなきゃと思ってたけど。どうせサーバ機の前で直接ログインすることは少ないのだし。

_coLinux で Vine Linux 3.0 を動かしてみました という記事を眺めてたら、そちらの中でも RunLevel 5にしていた。ということは、それしかないか。

試しに RunLevel 5 にして再起動。…アレ? 画面はテキストログインのまま。もしかして、Xvfb を gdm.conf に指定したことで、Linux 側ではグラフィカルログインにならずに済んだのだろうか。

違った。
[servers]
0=Standard
[servers]
# 0=Standard
としてコメントアウトしてたのが原因っぽい。逆に言うと、そこをコメントアウトしておけば、RunLevel 5 でもグラフィカルログインにならないと。たぶん。

一部のフォントがおかしい :

vnc経由で emacs を起動しようとすると「フォントがないよ」と言われる。

/etc/inetd.conf 中の vnc関連記述部分に、「-fp unix/:7100 -co /usr/lib/X11/rgb」を追加。
vnc-1152x864x24 stream tcp nowait nobody /usr/sbin/tcpd /usr/bin/Xvnc -inetd -query localhost -once -geometry 1152x864 -depth 24 -pixelformat RGB888 -fp unix/:7100 -co /usr/lib/X11/rgb -securitytypes none
vnc-1152x864x8  stream tcp nowait nobody /usr/sbin/tcpd /usr/bin/Xvnc -inetd -query localhost -once -geometry 1162x864 -depth 8 -cc 3 -fp unix/:7100 -co /usr/lib/X11/rgb -securitytypes none
vnc-1024x768x24 stream tcp nowait nobody /usr/sbin/tcpd /usr/bin/Xvnc -inetd -query localhost -once -geometry 992x704 -depth 24 -pixelformat RGB888 -fp unix/:7100 -co /usr/lib/X11/rgb -securitytypes none
vnc-1024x768x8  stream tcp nowait nobody /usr/sbin/tcpd /usr/bin/Xvnc -inetd -query localhost -once -geometry 992x704 -depth 8 -cc 3 -fp unix/:7100 -co /usr/lib/X11/rgb -securitytypes none
これでようやく満足できる動作になった。

念のため /etc/hosts.allow を書き換えて予想外のIPからアクセスできないかどうかを確認 :

制限できてるみたい。本来の指定に戻す。

参考ページ :


以上です。

過去ログ表示

Prev - 2005/08 - Next
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project