Raspberry PiのGUIにリモートで接続する場合に、ネットではVNCがデファクトスタンダートとしてよく見られます。今回はSSHでRaspberry Piにリモートログインして、CUI(コマンドライン)でVNCをセットアップする方法を紹介します。
Raspberry PiにVNCをセットアップする方法をググってみると、Raspberry Piにモニタやマウス・キーボードを繋げた状態でRaspberry PiのGUIで設定する方法が出てきますが、今時Raspberry Piにいちいちモニタなんか繋ぎません。そもそもRaspberry Piにモニタを繋ぐのが面倒だからVNCをセットアップするのですからね。
SSHでRaspberry PiにVNCをセットアップ
Raspberry Pi OSにはデフォルトでVNCがセットアップされていて、これを有効化するだけで使用することができます。GUIで設定する場合には設定ツールを使って有効化するのですが、Rapberry Piの設定ツールは元々CUI用が用意されていますので、それを起動すればGUIのような操作感で設定することができます。
SSHで接続したら、設定ツールの起動コマンドを入力してください。
sudo raspi-config
すると設定ツールが起動します。
VNCサーバーの有効化
キーボードの下カーソルキーを押してメニューから「Interface Options」を選択してenterキーを押してください。
「VNC」を選択してenterキーを押してください。
VNCを有効化するかの確認メッセージが表示されますので、左カーソルキーで「<Yes>」を選択してenterキーを押してください。
「The VNC Server is enabled」とVNCが有効化されたことを示すメッセージが表示されますので、「<Ok>」でenterキーを押すと最初のメニューに戻ります。
VNCで接続したときの解像度を設定
次にVNCで接続したときのデスクトップの解像度を設定します。メニューから「Display Options」を選択してenterキーを押してください。
一覧にVNCの解像度を設定する「VNC Resolution」がありますので、選択してenterキーを押してください。
解像度を選択してenterキーを押してください。私はフルHDのモニタで扱いやすいように、フルHDより一つ小さい解像度にしています。
確認メッセージが表示されますので、「<OK>」でenterキーを押すと、最初のメニューに戻ります。
右カーソルキーで「<Finish>」を選択してenterキーを押してください。
Raspberry Piを再起動する確認メッセージが表示されますので、「<Yes>」を選択してenterキーを押してください。この時点でRaspberry Piは再起動を開始して、SSHが強制切断されます。Raspberry Pi OS側の設定はこれで終了です。
PCにVNCクライアントをセットアップしてRaspberry Piに接続
Raspberry Piに接続するにはPC側にVNCクライアントが必要です。VNCクライアントはいくつかありますが、よく使われているRealVNCのVNC Viewerを使用します。Raspberry PiにプリインストールされているVNCサーバーもRealVNC製のものですので、なんとなく気持ち良いですしね。
以下のVNC Viewerのダウンロードページからインストーラーをダウンロード、インストールしてください。今回はWindowsを例にしていますが、macやLinux用もあります。
ちなみに、ことあるごとにアカウントを作れとかフリートライアルとか言ってきますが、非商用利用の場合には無料で利用できますし、同一LAN内(端的に言えば家の中)のRaspberry Piに接続するためにはアカウントを作成する必要もありません。アカウントを作るとGoogleのChromeリモートデスクトップのようにRealVNCのサーバー経由で外出先から接続できるようになりますが、今回は家の中から接続する前提でアカウントを作らずに進めます。
インストーラーは最初に言語の選択が出てきますが、日本語はありませんので、とりあえずEnglishを選択しています。あとはデフォルトのまま「Next」をクリックしていけばOKです。
インストールした「RealVNC Viewer」を起動すると、アカウントでサインインして一緒にあれやこれや利用するように勧めてきますが、下の「Use RealVNC Viewer without signing in (サインインしないでRealVNC Viewerを使用します)」をクリックします。ちなみにその下の「Send anonymous usage data to help ・・・・」はいつもの使用状況の匿名データーを・・・です。無料で使用するのでこれくらいは協力してあげましょう。
メイン画面が表示されますので、左上のメニューから「File」→「New connection…」を選択します。
表示されたダイアログで「VNC Server:」にraspberrypi.localのようなホスト名かもしくはIPアドレスを指定します。「Name」は適当にわかりやすい名前を付けておきましょう。あとは変更不要ですので「OK」をクリックして保存します。
メイン画面に戻ると、設定した「Rapberry Pi(さっき付けた名前)」が追加されているのでダブルクリックすると接続開始です。
初回のみ知らないサーバーだけど本当に接続するか?という確認メッセージが表示されますので「Continue」をクリックして続行してください。
Raspberry PiのログインIDとパスワードを聞いてきますので、入力して「OK」をクリックしてください。
Raspberry Piのデスクトップにリモート接続できました。
右上のVNCのアイコンをクリックすると、VNCの接続情報などが表示されます。Raspberry PiにプリインストールされているVNCサーバーもRealVNC製であることがわかりますね。
実はraspberrypi.localを指定すると問題がある
ここまでの説明のスクリーンショットでは、接続先であるVNC Serverにはホスト名であるraspberrypi.localを指定しています。これはRaspberry Pi Imagerでモニタなしでのセットアップを行うと、とりあえずraspberrypi.local(任意に変更できますが)でリモート接続するようになっているからです。
しかし、実はこのVNC Viewerではraspberrypi.localのようなホスト名をVNC Serverに指定すると問題があります。これに関しての解説と対処方法は下記の記事を参考にしてください。
ただし、これも一時しのぎな対処ですので、恒久的にはRaspberry PiのIPアドレスを固定するのが良いでしょう。上記のようにraspberrypi.localでも取りあえずはVNCで接続できますので、一度VNCで接続してGUIでIPアドレスを設定するのが簡単だと思います。
SSHによるコマンドラインだけではなく、デスクトップもネットワーク越しに操作できるようになりました。前回のRaspberry Pi OSのインストールと合わせて、これでRaspberry Piに一切モニタやマウス、キーボードを繋がずに使用できます。Raspberry Piにモニタを繋ぐのはとてもとても面倒でしたので助かりますね。Raspberry Pi Imageブラボーです。