Ubuntu 22.04 LTSは、標準で「リモートデスクトップ」が提供されていますが、ユーザーでログインしないと接続できないなど使い勝手が悪いため、x11vncを導入します。

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

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

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

$ sudo apt install lightdm

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

ウインドウシステムの変更

筆者の環境では、nVIDIA系のグラボを使用しているため、デフォルトウインドウシステムが最初から「X11」になっていたが、「Wayland」になっている場合は、以下の手順で変更する。

LightDMのログイン画面で、ユーザー名の右側に表示されているUbuntuロゴをクリックして「Ubuntu on Xorg」を選択して一度ログインしておく。これでデフォルトウインドウシステムが「x11」へ変更される。

インストール

以下の手順で、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セッションが切れずにログインできる。