x11vnc/Debian9.9
デスクトップ環境を使用している場合、リモートでデスクトップを使用したい場合があります。
今回は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本体にディスプレイ及びキーボード・マウスを接続して、ログイン画面を表示させます。
パスワードを入力して、「サインイン」をクリックまたはエンターキーを押します。
デスクトップが表示されたら、画面右上の下向き矢印「▼」をクリックします。
ログインしているユーザーが表示されるので、それをクリックします。
パスワードの入力が促されるので、ユーザーに対応したパスワードを入力します。
ロックが解除されるので、「自動ログイン」をクリックして、「オン」にします。
設定の確認をするために、ウインドウ左上の左向き矢印「<」をクリックします。
「ユーザー」をクリックします。自動ログインがオンになっていればOKです。
最後に「ログインした状態のまま」にしておきます。
x11vncのパスワード設定
認証なしで画面が見れてしまうのは危険(特にログインしっぱなし)なので、パスワードを設定します。
以下のコマンドを実行します。
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だと、超縦長な画面になります…。
雑感
自動ログインでログインしっぱなしにする必要があるので、何となく「不安」を感じます。
なんか、色々すればどうにかなるみたいですが…無理矢理感が否めないので、私はここまでとします。