27 February 2010

(Ubuntu 9.10) vncserver

Ubuntu 9.10でvncserverを使う設定

■ デスクトップ共有を行う場合

標準でインストールされているvino(リモート・デスクトップ)を有効化すると、デスクトップ共有のみが行える。 システム → 設定 → リモート・デスクトップ で設定する。

■ ユーザ権限で稼働させる場合

vncserverをインストールする。

# apt-get install vnc4server

接続したいユーザに移って、そこでvncserverを常駐実行する。たとえば、userに接続したい場合は、次のようにする。最初に起動するときに、パスワードの入力が促され、自動的に ~/.vnc/passwd が作成される。

# su - user # vncserver :1 ← display=1 (5901/tcp) を開く例

iptablesを利用している場合は、vncserverのポートを開ける。例えば、192.168.1.0/24にアクセスを許可する場合は次のようにする。

# iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 5901 -j ACCEPT

クライアントにインストールされているvncviewerより接続する。

# vncviewer 192.168.1.101:1 ← xvnc4viewerを使う場合の例 # vinagre 192.168.1.101:1 ← アクセサリ → インターネット → リモートデスクトップビューワを使う場合の例

20100227-vnc-desktop.jpg

ログアウト後は vncserver の残骸が実行されたままになるため、強制的に停止する。

# vncserver -kill :1

■ gdmのログオンをさせる場合

vncserverと(インストールされていない場合は)xinetdをインストールする。

# apt-get install vnc4server # apt-get install xinetd

vncserverがxinetdから起動できるように、設定ファイルを新規作成する。

/etc/xinetd.d/vnc
service vnc-2 { disable = yes socket_type = stream wait = no protocol = tcp user = nobody group = tty server = /usr/bin/Xvnc server_args = -inetd -query localhost -once PasswordFile=/etc/passwd_vnc -extension XFIXES }

上で赤に着色されている”サービス名”に対応するポート番号を定義する。

/etc/services
~ 省略 ~ ggz 5688/udp # GGZ Gaming Zone vnc-1 5901/tcp # VNC Server (display:1) vnc-2 5902/tcp # VNC Server (display:2) vnc-3 5903/tcp # VNC Server (display:3) vnc-4 5904/tcp # VNC Server (display:4) x11 6000/tcp x11-0 # X Window System ~ 省略 ~

ログオン用のパスワードを作成する。

# vncpasswd /etc/passwd_vnc # chown nobody:tty /etc/passwd_vnc

Gnomeログオン画面を表示させるため、GDMの設定を行う。custom.confファイルが無い場合、/usr/share/doc/gdm/examples/custom.conf からコピーしてから編集する。(/usr/lib/gdm/gdmlogin というファイルは存在しないが、この内容でよいらしい…)

/etc/gdm/custom.conf
# GDM configuration storage [daemon] RemoteGreeter=/usr/lib/gdm/gdmlogin [xdmcp] Enable=true [chooser] [security] [debug]
/etc/gdm/gdm.schemas
~ 省略 ~ <schema> <key>security/DisallowTCP</key> <signature>b</signature> <default>flase</default> </schema> <schema> <key>xdmcp/Enable</key> <signature>b</signature> <default>true</default> </schema> ~ 省略 ~

xinetdとgdmサービスをリスタートする。

iptablesを利用している場合は、vncserverのポートを開ける。例えば、192.168.1.0/24にアクセスを許可する場合は次のようにすればよいはずだが、gdmに接続できない… (Wiresharkでパケットをチラッと見てみたが、原因不明)

# iptables -A INPUT -p tcp -s 192.168.1.0/24 -m multiport --dports 5901:5904 -j ACCEPT # iptables -A INPUT -p tcp -s 192.168.1.0/24 -m multiport --dports 6000:6007 -j ACCEPT # iptables -A INPUT -p udp -s 192.168.1.0/24 -m multiport --dports 6000:6007 -j ACCEPT # iptables -A INPUT -p udp -s 192.168.1.0/24 --dport 177 -j ACCEPT # iptables -A INPUT -p udp -s 192.168.1.0/24 -m multiport --dports 1024:65535 --sport 177 -j ACCEPT

20100227-vnc-gdmlogin.jpg

■ 参考リンク
Linux Post : [SOLVED] Ubuntu 9.10: Remote VNC Server login problem