X11vnc/Debian9.9

提供: とある社畜の頭脳整理
2019年7月22日 (月) 06:54時点におけるRin-scrooge (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

デスクトップ環境を使用している場合、リモートでデスクトップを使用したい場合があります。
今回はX11vncを使用して、リモートでデスクトップに接続してみようと思います。

X11vncのインストール

下記コマンドを実行して、X11vncをインストールします。

sudo apt-get install x11vnc

(確認されたら「y」を押してください)
だぁ~っとなってインストールが完了します。

test@debian:~$ sudo apt-get install x11vnc
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の追加パッケージがインストールされます:
  libtcl8.6 libtk8.6 libvncclient1 libvncserver1 tcl tcl8.6 tk tk8.6 x11vnc-data
提案パッケージ:
  tcl-tclreadline
以下のパッケージが新たにインストールされます:
  libtcl8.6 libtk8.6 libvncclient1 libvncserver1 tcl tcl8.6 tk tk8.6 x11vnc x11vnc-data
アップグレード: 0 個、新規インストール: 10 個、削除: 0 個、保留: 3 個。
3,503 kB のアーカイブを取得する必要があります。
この操作後に追加で 10.3 MB のディスク容量が消費されます。
続行しますか? [Y/n] y
取得:1 http://ftp.jp.debian.org/debian stretch/main amd64 libtcl8.6 amd64 8.6.6+dfsg-1+b1 [985 kB]
取得:2 http://ftp.jp.debian.org/debian stretch/main amd64 libtk8.6 amd64 8.6.6-1+b1 [754 kB]
取得:3 http://ftp.jp.debian.org/debian stretch/main amd64 libvncclient1 amd64 0.9.11+dfsg-1.3~deb9u1 [141 kB]
取得:4 http://ftp.jp.debian.org/debian stretch/main amd64 libvncserver1 amd64 0.9.11+dfsg-1.3~deb9u1 [210 kB]
取得:5 http://ftp.jp.debian.org/debian stretch/main amd64 tcl8.6 amd64 8.6.6+dfsg-1+b1 [123 kB]
取得:6 http://ftp.jp.debian.org/debian stretch/main amd64 tcl amd64 8.6.0+9 [5,468 B]
取得:7 http://ftp.jp.debian.org/debian stretch/main amd64 tk8.6 amd64 8.6.6-1+b1 [71.8 kB]
取得:8 http://ftp.jp.debian.org/debian stretch/main amd64 tk amd64 8.6.0+9 [5,506 B]
取得:9 http://ftp.jp.debian.org/debian stretch/main amd64 x11vnc-data all 0.9.13-2+deb9u1 [216 kB]
取得:10 http://ftp.jp.debian.org/debian stretch/main amd64 x11vnc amd64 0.9.13-2+deb9u1 [992 kB]

~ 中略 ~

libc-bin (2.24-11+deb9u4) のトリガを処理しています ...
man-db (2.7.6.1-2) のトリガを処理しています ...
gnome-menus (3.13.3-9) のトリガを処理しています ...
libtcl8.6:amd64 (8.6.6+dfsg-1+b1) を設定しています ...
libtk8.6:amd64 (8.6.6-1+b1) を設定しています ...
tcl8.6 (8.6.6+dfsg-1+b1) を設定しています ...
tk8.6 (8.6.6-1+b1) を設定しています ...
tcl (8.6.0+9) を設定しています ...
tk (8.6.0+9) を設定しています ...
x11vnc (0.9.13-2+deb9u1) を設定しています ...
libc-bin (2.24-11+deb9u4) のトリガを処理しています ...

自動ログインの設定

X11vncですが、基本的にログインしている状態でないと、リモートで接続することができません。
なので、画面からリモートで接続したいユーザーで自動ログインするようにします。

PC本体にディスプレイ及びキーボード・マウスを接続して、ログイン画面を表示させます。
Debian-x11vnc-001.png

パスワードを入力して、「サインイン」をクリックまたはエンターキーを押します。
Debian-x11vnc-002.png

デスクトップが表示されたら、画面右上の下向き矢印「▼」をクリックします。
Debian-x11vnc-003.png

ログインしているユーザーが表示されるので、それをクリックします。
Debian-x11vnc-004.png

「アカウント設定」をクリックします。
Debian-x11vnc-005.png

「ロック解除」をクリックします。
Debian-x11vnc-006.png

パスワードの入力が促されるので、ユーザーに対応したパスワードを入力します。
Debian-x11vnc-007.png

「認証」ボタンをクリックします。
Debian-x11vnc-008.png

ロックが解除されるので、「自動ログイン」をクリックして、「オン」にします。
Debian-x11vnc-009.png

設定の確認をするために、ウインドウ左上の左向き矢印「<」をクリックします。
Debian-x11vnc-010.png

「ユーザー」をクリックします。自動ログインがオンになっていればOKです。
Debian-x11vnc-011.png

最後に「ログインした状態のまま」にしておきます。

X111vncのパスワード設定

認証なしで画面が見れてしまうのは危険(特にログインしっぱなし)なので、パスワードを設定します。
以下のコマンドを実行します。

x11vnc -storepasswd

すると、パスワードの入力が2回求められるので、2回とも同じパスワードを入力します。
また、ホームディレクトリの「.vnc」ディレクトリに保存するか問われるので、「y」を入力します

test@debian:~$ x11vnc -storepasswd
Enter VNC password: 
Verify password:    
Write password to /home/test/.vnc/passwd?  [y]/n y
Password written to: /home/test/.vnc/passwd
test@debian:~$

X11vncの起動

最小限のオプションで起動してみます。
以下のコマンドを実行します。

x11vnc -display :0 -rfbauth ~/.vnc/passwd

上記は、「ディスプレイ番号0(5900ポート)で『~/.vnc/passwd』に設定されたパスワード認証で起動」という意味です。
以下のようなメッセージが出て、カーソルが点滅して戻ってこなかったら起動しています(色々言われていますが…www)。

24/06/2019 14:50:39 passing arg to libvncserver: -rfbauth
24/06/2019 14:50:39 passing arg to libvncserver: /home/test/.vnc/passwd
24/06/2019 14:50:39 x11vnc version: 0.9.13 lastmod: 2011-08-10  pid: 2472
24/06/2019 14:50:39 Using X display :0
24/06/2019 14:50:39 rootwin: 0x280 reswin: 0x1400001 dpy: 0x84e7bfe0
24/06/2019 14:50:39 
24/06/2019 14:50:39 ------------------ USEFUL INFORMATION ------------------
24/06/2019 14:50:39 X DAMAGE available on display, using it for polling hints.
24/06/2019 14:50:39   To disable this behavior use: '-noxdamage'
24/06/2019 14:50:39 
24/06/2019 14:50:39   Most compositing window managers like 'compiz' or 'beryl'
24/06/2019 14:50:39   cause X DAMAGE to fail, and so you may not see any screen
24/06/2019 14:50:39   updates via VNC.  Either disable 'compiz' (recommended) or
24/06/2019 14:50:39   supply the x11vnc '-noxdamage' command line option.
24/06/2019 14:50:39 
24/06/2019 14:50:39 Wireframing: -wireframe mode is in effect for window moves.
24/06/2019 14:50:39   If this yields undesired behavior (poor response, painting
24/06/2019 14:50:39   errors, etc) it may be disabled:
24/06/2019 14:50:39    - use '-nowf' to disable wireframing completely.
24/06/2019 14:50:39    - use '-nowcr' to disable the Copy Rectangle after the
24/06/2019 14:50:39      moved window is released in the new position.
24/06/2019 14:50:39   Also see the -help entry for tuning parameters.
24/06/2019 14:50:39   You can press 3 Alt_L's (Left "Alt" key) in a row to 
24/06/2019 14:50:39   repaint the screen, also see the -fixscreen option for
24/06/2019 14:50:39   periodic repaints.
24/06/2019 14:50:39 
24/06/2019 14:50:39 XFIXES available on display, resetting cursor mode
24/06/2019 14:50:39   to: '-cursor most'.
24/06/2019 14:50:39   to disable this behavior use: '-cursor arrow'
24/06/2019 14:50:39   or '-noxfixes'.
24/06/2019 14:50:39 using XFIXES for cursor drawing.
24/06/2019 14:50:39 GrabServer control via XTEST.
24/06/2019 14:50:39 
24/06/2019 14:50:39 Scroll Detection: -scrollcopyrect mode is in effect to
24/06/2019 14:50:39   use RECORD extension to try to detect scrolling windows
24/06/2019 14:50:39   (induced by either user keystroke or mouse input).
24/06/2019 14:50:39   If this yields undesired behavior (poor response, painting
24/06/2019 14:50:39   errors, etc) it may be disabled via: '-noscr'
24/06/2019 14:50:39   Also see the -help entry for tuning parameters.
24/06/2019 14:50:39   You can press 3 Alt_L's (Left "Alt" key) in a row to 
24/06/2019 14:50:39   repaint the screen, also see the -fixscreen option for
24/06/2019 14:50:39   periodic repaints.
24/06/2019 14:50:39 
24/06/2019 14:50:39 XKEYBOARD: number of keysyms per keycode 10 is greater
24/06/2019 14:50:39   than 4 and 100 keysyms are mapped above 4.
24/06/2019 14:50:39   Automatically switching to -xkb mode.
24/06/2019 14:50:39   If this makes the key mapping worse you can
24/06/2019 14:50:39   disable it with the "-noxkb" option.
24/06/2019 14:50:39   Also, remember "-remap DEAD" for accenting characters.
24/06/2019 14:50:39 
24/06/2019 14:50:39 X FBPM extension not supported.
24/06/2019 14:50:39 X display is capable of DPMS.
24/06/2019 14:50:39 --------------------------------------------------------
24/06/2019 14:50:39 
24/06/2019 14:50:39 Default visual ID: 0x21
24/06/2019 14:50:39 Read initial data from X display into framebuffer.
24/06/2019 14:50:39 initialize_screen: fb_depth/fb_bpp/fb_Bpl 24/32/3200
24/06/2019 14:50:39 
24/06/2019 14:50:39 X display :0 is 32bpp depth=24 true color
24/06/2019 14:50:39 
24/06/2019 14:50:39 Autoprobing TCP port 
24/06/2019 14:50:39 Autoprobing selected TCP port 5900
24/06/2019 14:50:39 Autoprobing TCP6 port 
24/06/2019 14:50:39 Autoprobing selected TCP6 port 5900
24/06/2019 14:50:39 listen6: bind: Address already in use
24/06/2019 14:50:39 Not listening on IPv6 interface.
24/06/2019 14:50:39 
24/06/2019 14:50:39 Xinerama is present and active (e.g. multi-head).
24/06/2019 14:50:39 Xinerama: number of sub-screens: 1
24/06/2019 14:50:39 Xinerama: no blackouts needed (only one sub-screen)
24/06/2019 14:50:39 
24/06/2019 14:50:39 fb read rate: 180 MB/sec
24/06/2019 14:50:39 fast read: reset -wait  ms to: 10
24/06/2019 14:50:39 fast read: reset -defer ms to: 10
24/06/2019 14:50:39 The X server says there are 10 mouse buttons.
24/06/2019 14:50:39 screen setup finished.
24/06/2019 14:50:39 

The VNC desktop is:      debian:0
PORT=5900

******************************************************************************
Have you tried the x11vnc '-ncache' VNC client-side pixel caching feature yet?

The scheme stores pixel data offscreen on the VNC viewer side for faster
retrieval.  It should work with any VNC viewer.  Try it by running:

    x11vnc -ncache 10 ...

One can also add -ncache_cr for smooth 'copyrect' window motion.
More info: http://www.karlrunge.com/x11vnc/faq.html#faq-client-caching

VNC Viewerなどで接続してみてください。
デスクトップが表示されたら、成功です。


Viewerを終了して気づいた方もいらっしゃるかもしれませんが、この状態だとViewerを終了するとX11vncも終了してしまいます。
ココらへんは、オプションで設定します。


先ずは、終了しないようにします。
終了しないようにするには、「-forever」オプションを指定します。

x11vnc -display :0 -rfbauth ~/.vnc/passwd -forever

あと…表示されているメッセージに基づいてオプションを設定していきます。

24/06/2019 15:56:31 X DAMAGE available on display, using it for polling hints.
24/06/2019 15:56:31   To disable this behavior use: '-noxdamage'
24/06/2019 15:56:31 
24/06/2019 15:56:31   Most compositing window managers like 'compiz' or 'beryl'
24/06/2019 15:56:31   cause X DAMAGE to fail, and so you may not see any screen
24/06/2019 15:56:31   updates via VNC.  Either disable 'compiz' (recommended) or
24/06/2019 15:56:31   supply the x11vnc '-noxdamage' command line option.

「-noxdamage」を指定したほうが良さそうです。
(正しく理解できていません…)

x11vnc -display :0 -rfbauth ~/.vnc/passwd -forever -noxdamage
24/06/2019 15:56:31 Wireframing: -wireframe mode is in effect for window moves.
24/06/2019 15:56:31   If this yields undesired behavior (poor response, painting
24/06/2019 15:56:31   errors, etc) it may be disabled:
24/06/2019 15:56:31    - use '-nowf' to disable wireframing completely.
24/06/2019 15:56:31    - use '-nowcr' to disable the Copy Rectangle after the
24/06/2019 15:56:31      moved window is released in the new position.
24/06/2019 15:56:31   Also see the -help entry for tuning parameters.
24/06/2019 15:56:31   You can press 3 Alt_L's (Left "Alt" key) in a row to 
24/06/2019 15:56:31   repaint the screen, also see the -fixscreen option for
24/06/2019 15:56:31   periodic repaints.

「反応が悪い」「塗りつぶしエラー」などが出るのであれば、「-nowf」を設定した方が良いようです。
「-nowcr」は「ウインドウの移動等をしたあとの、長方形のコピーを無効化」って…よくわからないですね…
まぁ、エラーが出ない限りは設定する必要はなさそうです。

24/06/2019 16:03:24 XFIXES available on display, resetting cursor mode
24/06/2019 16:03:24   to: '-cursor most'.
24/06/2019 16:03:24   to disable this behavior use: '-cursor arrow'
24/06/2019 16:03:24   or '-noxfixes'.
24/06/2019 16:03:24 using XFIXES for cursor drawing.
24/06/2019 16:03:24 GrabServer control via XTEST.

「XFIXES」を調べてみたけどがよくわからないな…
Wikiによると「いくつかのプロトコルの変更」と書かれている…
ということは、無視したほうが良いのかな?
無効にする場合は「-cursor arrow」か「-noxfixes」を設定するみたい。

24/06/2019 16:03:24 Scroll Detection: -scrollcopyrect mode is in effect to
24/06/2019 16:03:24   use RECORD extension to try to detect scrolling windows
24/06/2019 16:03:24   (induced by either user keystroke or mouse input).
24/06/2019 16:03:24   If this yields undesired behavior (poor response, painting
24/06/2019 16:03:24   errors, etc) it may be disabled via: '-noscr'
24/06/2019 16:03:24   Also see the -help entry for tuning parameters.
24/06/2019 16:03:24   You can press 3 Alt_L's (Left "Alt" key) in a row to 
24/06/2019 16:03:24   repaint the screen, also see the -fixscreen option for
24/06/2019 16:03:24   periodic repaints.

スクロール検出に関する設定???
「反応が悪い」「塗りつぶしエラー」などが出るのであれば、「-noscr」を設定した方が良いようです。
ただ…「定期的な再描画については『-fixscreen』を参照」とも言っているので、そちらをヘルプで参照したほうが良いかな?

24/06/2019 16:03:24 XKEYBOARD: number of keysyms per keycode 10 is greater
24/06/2019 16:03:24   than 4 and 100 keysyms are mapped above 4.
24/06/2019 16:03:24   Automatically switching to -xkb mode.
24/06/2019 16:03:24   If this makes the key mapping worse you can
24/06/2019 16:03:24   disable it with the "-noxkb" option.
24/06/2019 16:03:24   Also, remember "-remap DEAD" for accenting characters.

どうやら自動的に「-xkb」モードに変更されているっぽい。
まぁそれはそれで良いと思うのだけど、メッセージが表示されるのは気持ち悪いので「-xkb」を設定してみる。

x11vnc -display :0 -rfbauth ~/.vnc/passwd -forever -noxdamage -xkb

う~ん…色々設定が合って難しいなぁ~。
あと、必要そうなオプションは「-loop」です。
【ubuntuサーバー再構築】no.04 x11vncを設定してみる – 犬を一匹飼っている」によると、「こけたらまた起動し直す」ようです。

まぁ、色々あって最終的には…

x11vnc -display :0 -rfbauth ~/.vnc/passwd -forever -noxdamage -xkb -wf -cursor most -fixscreen V=10 -fixscreen C=10 -loop

って感じでしょうか?
もし「キーリピート(キーを押しっぱなしにしたときに連続して入力)」を有効にしたい場合は「-repeat」を設定してください。


X11vncの自動起動設定

「systemd」を使用して、x11vncをDebian起動時に起動するように設定します。
まずは、「/etc/systemd/system」ディレクトリに「x11vnc.service」ファイルを作成します。
以下のコマンドを実行して、ファイルを作成します。

sudo nano /etc/systemd/system/x11vnc.service

内容は以下のとおりです。

[Unit]
Description=x11vnc (Remote access)
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -display :0 -rfbauth /home/[ユーザーID]/.vnc/passwd -forever -noxdamage -xkb -wf -cursor most -fixscreen V=10 -fixscreen C=10 -loop
ExecStop=/bin/kill -TERM $MAINPID
ExecReload=/bin/kill -HUP $MAINPID
KillMode=control-group
Restart=on-failure
User=[ユーザーID]

[Install]
WantedBy=graphical.target

[ユーザーID](2箇所)を前段でログインしっぱなしにしたユーザーIDに変更してください。

そしたらサービスを起動してみます。
以下のコマンドを実行してください。

sudo systemctl start x11vnc

正常に実行できているか確認します。

sudo systemctl status x11vnc

以下の様に表示されれば問題ないかと思います。

test@debian:/etc/systemd/system$ sudo systemctl status x11vnc.service
● x11vnc.service - x11vnc (Remote access)
   Loaded: loaded (/etc/systemd/system/x11vnc.service; disabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-06-24 17:15:29 JST; 2s ago
 Main PID: 2761 (x11vnc)
    Tasks: 2 (limit: 4915)
   CGroup: /system.slice/x11vnc.service
           ├─2761 /usr/bin/x11vnc -display :0 -rfbauth /home/test/.vnc/passwd -forever -noxdamage -xkb -wf -cursor most -fixscreen V=10 -fixscreen C=10 -l
           └─2762 /usr/bin/x11vnc -display :0 -rfbauth /home/test/.vnc/passwd -forever -noxdamage -xkb -wf -cursor most -fixscreen V=10 -fixscreen C=10 -l

 6月 24 17:15:30 debian x11vnc[2761]: 24/06/2019 17:15:30
 6月 24 17:15:30 debian x11vnc[2761]: The VNC desktop is:      debian:0
 6月 24 17:15:30 debian x11vnc[2761]: PORT=5900
 6月 24 17:15:30 debian x11vnc[2761]: ******************************************************************************
 6月 24 17:15:30 debian x11vnc[2761]: Have you tried the x11vnc '-ncache' VNC client-side pixel caching feature yet?
 6月 24 17:15:30 debian x11vnc[2761]: The scheme stores pixel data offscreen on the VNC viewer side for faster
 6月 24 17:15:30 debian x11vnc[2761]: retrieval.  It should work with any VNC viewer.  Try it by running:
 6月 24 17:15:30 debian x11vnc[2761]:     x11vnc -ncache 10 ...
 6月 24 17:15:30 debian x11vnc[2761]: One can also add -ncache_cr for smooth 'copyrect' window motion.
 6月 24 17:15:30 debian x11vnc[2761]: More info: http://www.karlrunge.com/x11vnc/faq.html#faq-client-caching

「-ncache」オプションやってみ?みたいなメッセージが出ていますが…無視します。
試しに「-ncache 10」とか設定してつないでみてください。
特に問題なければそれでいいですが…RealVNCのVNC Viewerだと、超縦長な画面になります…。

雑感

自動ログインでログインしっぱなしにする必要があるので、何となく「不安」を感じます。
なんか、色々すればどうにかなるみたいですが…無理矢理感が否めないので、私はここまでとします。

参考サイト

【ubuntuサーバー再構築】no.04 x11vncを設定してみる – 犬を一匹飼っている