VNCを使って、Lubuntu 18.04をリモート操作する


私のように、デスクトップ型PCを買ってしまった人は、一度はこの問題に直面してしまうのではないだろううか。それは、「テレビも見たいけど、パソコンでしなければいけないことがある。」である。この問題は、パソコンをおいた部屋にテレビがあるか、テレビのあるリビングにパソコンがあれば問題ないが、私のように、パソコンとテレビを別々の部屋においてしまった人は、この問題はいささか重要なものであろう。

そこで、VNCを利用して、Lubuntu 18.04をリモートで操作してみることにした。リモートで操作できれば、パソコンの目の前にいなくても、パソコンを操作することができるはずだ。

リモート接続に関する解説は検索すれば多くがヒットするものの、それらはほとんど、Ubuntuのものであり、GNOMEの設定を利用したものが多く、Lubuntuで実現できない解説が多く、結果手探りという形になってしまった。よって、私が手探りで得たやり方を、ここに書き記しておくことにする。

そもそも VNC ってなんだろう?

「Virtual Network Computing」という、リモートデスクトップソフトのことらしい。詳しい説明を書くと量が多そうなので、気になる人は、検索してみてほしい。とりあえず、Wikipediaのページを貼っておくことにする。
・Wikipedia "Virtual Network Computing"

まずはセットアップ

今回は、「vnc4server」パッケージを利用することにした。なぜこのパッケージかというと、他に比べて複雑な設定がなく、比較的簡単に利用できる(と、個人的に思った)からだ。

リポジトリの追加

まず、Lubuntuの、「ソフトウェアとアップデート」から、「universe」リポジトリからのダウンロードを有効にする必要がある。
メニューの、「設定」の、「ソフトウェアとアップデート」を開き、「コミュニティによってメンテナンスされるフリー/オープンソースソフトウェア (universe)」にチェックを入れ、「終了」を押そう。
「利用可能なソフトウェアの情報が古くなっています。」と表示されたら、「再読込」で、更新する。

インストールしてみる

では、リポジトリの設定が終わったので、パッケージ「vnc4server」をインストールしてみる。
インストールはとても簡単だ。aptですぐにインストールできる。

sudo apt install vnc4server

これだけでインストールは完了。

早速使ってみる。

ここからは、接続される側を「サーバ」、接続する側を「クライアント」と呼ぶことにする。

サーバ側の設定

インストールが完了したら、以下のコマンドを入力するだけで実行できる。

vncserver :1

このコマンドを実行すると、パスワード設定することになる。パスワードを求められるので、6文字以上、8文字以下のパスワードを設定する。
これだけ。あとは、サーバ側のIPアドレスをメモしておく。IPアドレスを調べるには、ipコマンドを利用するのが一般的だが、Lubuntuの場合、パネルの右下の、接続アイコンをクリックし、「接続情報」を押せば、簡単に見ることが出来る。

クライアント側の設定

クライアントソフトは、とりあえずなんでもよい。ソフトによって、設定方法が異なるので、ここではクライアント側の設定は割愛させていただくことにする。
ただ、多くのクライアントソフトは、IPアドレスと、ポート番号、そして、パスワードを入力するようになっているはずだ。IPアドレスには、先程調べたものを入力する。また、ポート番号には、「5901」を指定しよう。そして、先程決めたパスワードを入力する。

では、使ってみよう。

上記の手順を実行し、クライアント側で接続すると...

このように、灰色の背景に、マウスカーソルと、「VNC config」というウィンドウがある画面が表示される。
どうやら、サーバー側の画面が複製されるわけではなく、クライアントはクライアントで別の画面が用意されるようだ。同じユーザーに、別々の画面からログインするといった具合であろうか。(違うかもしれない、よくはわからないが。)

パネルを起動

この一見何もなさそうな状態からどうするのかというと、実は、もうすでに、OpenBoxウィンドウマネージャーが起動しており、ある程度のことはできる。ただし、ちょっぴり使いづらいので、パネルを起動して、アプリの起動や切り替えが楽になるようにしてみる。
画面上の適当な場所を右クリックすると、

このように、アプリケーションを起動できるメニューが出現する。そこで、一番上の「Terminal emulator」を選択する。すると、デフォルトの端末が起動するので、

lxpanel

で、パネルを起動する。すると、

このように、パネルを起動することができた。

使い終わったら

使い終わったら、クライアント側で切断したあと、サーバ側で端末を開き、以下のコマンドを入力する。

vncserver -kill :1

これで、vncserverは停止される。

次回以降使うとき

次回以降は、また同じような手順で接続すればよい。ただし、パスワードは再設定する必要はないので、vncserver :1と入力するだけですぐにサーバは起動する。

セキュリティのためのヒント

サーバ側の画面をロックしておく

リモート接続している間は、サーバー側の画面は使わないだろう。よって、サーバ側の画面をロックしておくことをおすすめする。サーバ側をロックしてしまっても、クライアント側に表示されている画面はロックされず、動いたままなのでそのまま利用できる。サーバ側で、メニューから、「ログアウト」を押し、「スクリーンのロック」で画面ロックしておこう。

たまにパスワードを変える

パスワードはあとからでも変更可能。

vncpasswd

これを入力すると、パスワードを尋ねられるので、再度設定すれば変更完了だ。

おまけ

画面サイズを変える

デフォルトのままでは、画面の比率は4:3であり、また、画面も小さめであるため、狭く感じるだろう。よって、画面サイズを適切なものに変更することができる。

起動時に指定する

最も簡単な方法は、起動時に、「-geometry」オプションを指定することだ。このオプションは、以下のように使う

vncserver -geometry 1920x1080 :1

このようにすると、画面サイズを1920 x 1080に設定可能だ。
ちなみに、「1920x1080」の、「x」は、アルファベットの「エックス」である。

ただし、この方法では、毎回オプションを設定する必要があるため、少々面倒だ。
よって、一時的ではなく、恒久的に変更する方法もある。

デフォルトの起動時の画質を変更する

まず、既存のvncserverの動作を終了しておく。
root権限で、テキストエディタを開き、「/usr/bin/vncserver」を開く。このファイルはPerlで記述されており、標準的なテキストエディタで簡単に編集することが可能だ。

ファイルを開くと

vncserver
$geometry = "1024x768"

のような行がある。その行を、例えば、横1280、縦720のサイズにする場合、以下のように書き換える。

vncserver
$geometry = "1280x720"

これで、再度サーバをスタートさせ、接続すれば、画面サイズが変わっているはず。

日本語入力をする

まず、ログイン中であれば、一旦ログアウトする。
Lubuntuでログインする前に、セッションとして、Lubuntuではなく、Openboxを指定する。ログイン画面上部のバーに、Lubuntuのロゴのマークがあると思うが、あれをクリックすると、選択肢が出てくる。あの中から、「Openbox」を選択してからログインする。しばらくすると、何もないデスクトップが表示されるので、右クリックして、「Terminal emulator」を押して、端末を起動したら、今までと同じように、vncserverをスタートさせる。
クライアント側において、まず、今まで通り、端末エミュレータを起動したら、

lxpanel &
fcitx

を行う。これにより、半角/全角を押すか、サポートされていない環境では、パネルのトレイに常駐しているFcitxアイコンをクリックすることで、日本語入力が可能である。

ちなみに、実は、Fcitxは、Flatpakアプリケーションとの相性が悪く、一部のFlatpakアプリケーションでは、Fcitxによる日本語入力ができない。そのため、IBusが利用できないかやってみたものの、VNC上では、残念ながらIBusは起動はするも、機能しなかった。

最後に

これを利用すれば、パソコンの前にいなくても、パソコンを操作できるようになる。スマートフォンや、ノートパソコンなどで接続すれば家中色んな場所で一つのPCを操作できる。ちょっと工夫が必要かもしれないが、これらは強力なツールとなるだろう。