読者です 読者をやめる 読者になる 読者になる

Debian8でVNC Serverを設定する

環境

OS : Debian8

インストール

$ apt iinstall tightvncserver

vncserverの起動

vncserverコマンドを実行し、パスワードを設定する。

$ vncserver 

You will require a password to access your desktops.

Password: 
Verify:   
Would you like to enter a view-only password (y/n)? n
...
New 'X' desktop is ie-server:2

Creating default startup script /home/gyamin/.vnc/xstartup
Starting applications specified in /home/gyamin/.vnc/xstartup
Log file is /home/gyamin/.vnc/ie-server:2.log

上記の例では、ディスプレイ番号2でvncserverが実行された。(:2)
vncserverを終了する場合は、-kill :ディスプレイ番号で、プロセスを終了する。

$ vncserver -kill :2
Killing Xtightvnc process ID 2097

vncserverへの接続

vncクライアントからサーバへ接続をする。Macの場合、Finderの 移動 > サーバへ接続 からvnc://接続先サーバ:ポート番号で接続ができる。
今回はディスプレイ番号が2なので、5902ポートに接続する。vnc://192.168.10.5:5902
vncserver起動時に設定したバスワードで認証する。

xinetdによるvncserverの起動

クライアントからの接続時に自動的にvncserverを実行するように、xinetdを設定する。

$ sudo vim /etc/services 
...
xvnc            5910/tcp                        # VNC Server    ←追加
...

xinetdの設定ファイルを作成する。

$ sudo vim /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 1024x768 -depth 24 -query localhost -once -rfbport 5910 -rfbauth /etc/xvnc_passwd
}

今回はまったのが、このファイルのserver_args。ネット上の情報を参考に以下のような設定をしていた。

server_args = -inetd -geometry 1024x768 -depth 24 -query localhost -once PasswordFile=/etc/xvnc_passwd

しかしこれではvncクライアントから接続ができず、どうしたらいいか??だった。     /usr/bin/Xvncコマンドの引数の設定なので、manでXvncを調べてみたところ、パスワードファイルの指定は-rfbauthで指定するとの記述が。     この設定に変更することで、クライアントから接続ができるようになった。

vncpasswdコマンドを利用し、xvnc設定で指定したパスワードファイルを作成する。

$ sudo vncpasswd /etc/xvnc_passwd
Password: 
Verify:   
Would you like to enter a view-only password (y/n)? n

パスワードファイルに権限を設定する。

$ sudo chown nobody:tty /etc/xvnc_passwd
$ ls -l /etc/xvnc_passwd 
-rw------- 1 nobody tty 8 Dec 22 18:36 /etc/xvnc_passwd

xinetdを再起動する。

$ sudo systemctl restart xinetd

vncクライアントからサーバへ接続を行う。正しく設定ができていれば、VNCサーバのパスワード入力が促され、パスワードを入力すると、接続ができる。
※ただし、この段階では別途接続したsshクライアントなどで、X Windowを利用するアプリを起動した場合、その出力が表示されるだけで、サーバの画面出力と同等の内容が出力されるわけではない。

lightdmの設定

vncサーバへの接続時に、ホストで出力される画面と同等の画面を表示できるよう、 /etc/lightdm/lightdm.conf に設定を行う。

# vim /etc/lightdm/lightdm.conf 

[XDMCPServer]
enabled=true
port=177


[VNCServer]
enabled=true
command=Xvnc
port=5900

サービスを再起動する。

# /etc/init.d/lightdm restart
[ ok ] Restarting lightdm (via systemctl): lightdm.service.

lightdmの設定後、vncクライアントから接続を行うと、GUIでログイン画面が表示される。