Ubuntu 20.04 LTSは、標準で「画面共有」が提供されていますが、動作(描画レート)が遅く、ユーザーでログインする必要があるなど、使い勝手が悪いため、x11vncを導入します。

本ページ記述の内容は、2020年5月時点のUbuntu 20.04 LTS上で確認したものです。関連ソフトのアップデートにより、状況が変わるかもしれませんのでご了承ください。アップデート情報やより良い方法がありましたらコメントをいただけると幸いです。

ディスプレイマネージャの変更

標準のGDM3ではx11vncが動作しないので、LightDMを導入する。

$ sudo apt install lightdm

インストールの途中で、デフォルトのディスプレイマネージャを選択する画面が表示されるので、LightDMを選択しておく。

サーバPCを再起動すると、ログイン画面がLightDMで表示される。

インストール

以下の手順で、x11vncを導入する。

$ sudo apt install x11vnc

パスワードファイルの作成

$ sudo x11vnc -storepasswd /etc/.vncpasswd
Enter VNC password:  ← パスワード入力
Verify password:     ← パスワード確認入力
Write password to /etc/.vncpasswd?  [y]/n 
Password written to: /etc/.vncpasswd

動作テスト

一度、手動で起動テストを実行する。

$ sudo x11vnc -auth guess -display :0 -rfbauth /etc/.vncpasswd -rfbport 5900
 -forever -loop -noxdamage -repeat -shared  ← 1行で入力する

別PCのVNCクライアントから接続して動作確認する。接続先は「サーバPCアドレス」または「サーバPCアドレス:0」とすればOK。

問題なければ、[Ctrl+C]で終了する。

自動起動の設定

サーバPC起動時にsystemdで自動起動するようユニットファイルを作成する。

$ sudo nano /etc/systemd/system/x11vnc.service
[Unit]
Description=x11vnc (Remote access)
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/x11vnc -auth guess -display :0 -rfbauth /etc/.vncpasswd -rfbport 5900
 -forever -loop -noxdamage -repeat -shared  ← 1行で記述する
ExecStop=/bin/kill -TERM $MAINPID
ExecReload=/bin/kill -HUP $MAINPID
KillMode=control-group
Restart=on-failure

[Install]
WantedBy=graphical.target

systemdへ登録して起動する。

$ sudo systemctl daemon-reload
$ sudo systemctl enable x11vnc
$ sudo systemctl start x11vnc

VNCクライアントから「IPアドレス」または「IPアドレス:0」で接続するとパスワード入力画面が表示されるので、設定したパスワードを入力すると、Ubuntuのログイン画面が表示される。

課題

Ubuntu 18.04 LTSの時にも感じたが、Ubuntu 16.04 LTSと比べると明らかに動作が遅く、常用するにはストレスフルだ。ディスプレイマネージャの実装状況にも影響されるため、x11vnc側では、これ以上の改善は難しいのかもしれない。

Ubuntu 18.04 LTSと同じく、ログイン画面でユーザーのパスワードを入力して[Enter]を押してログインするとVNCセッションが切れる場合がある。この場合、再度VNCクライアントから接続すれば、ログイン後のデスクトップが表示される。

対処方法として、VNCクライアントから接続後、ログイン画面でパスワード入力後[Enter]を押さず、パスワード入力欄の右端をクリックすると、VNCセッションが切れずにログインできる。