賢くなりたいトイプードルの日記

データサイエンス系の話をメインにしていきます

Raspberry PiにMacBookからリモート接続する方法

Raspberry Piを操作するのに、毎回キーボードとマウスを用意するのが面倒なので、MacBookからリモート操作するのが便利です。その方法をまとめました。

逆にラズパイからMacBookssh接続したり、ポートをトンネリングしたりする方法を解説した記事もあります。

まずラズパイとPCを同じIPアドレスWi-Fi)に接続しておいてください。

ラズパイのSSH接続を許可する

ラズパイをPCからリモート操作するために、SSH接続していきます。

Secure Shell(セキュアシェル、SSH)は、暗号認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコルパスワードなどの認証部分を含むすべてのネットワーク上の通信が暗号化される。

Secure Shell は、そもそもTelnetrshrloginなどといった、リモートホストシェルを利用するための既存のプロトコルを代用する手段として考えられていた。TelnetFTPは、ネットワーク上に平文でパスワードを送信してしまうため、パスワードをネットワーク経路上でのぞき見されてしまう(これを盗聴と呼ぶ)危険性が高く、商業的なインターネット空間では問題が大きかった。Telnet同様に、リモートホスト間でのファイルコピー用のコマンドrcpを代用するscpや、FTPを代用するためのsftpも用意されている。

SSHの暗号通信は、鍵交換アルゴリズムディフィー・ヘルマン鍵共有など)を用いて共通鍵暗号で使用するセッション鍵を生成し、共通鍵暗号トリプルDESAESなど)を用いて通信を暗号化し、公開鍵暗号RSADSA)を用いてホスト認証やユーザ認証を行なう、いわゆるハイブリッド暗号である。また、なりすましを防止するための認証の仕組みも充実している。認証方式も公開鍵認証の他にも、パスワード認証ワンタイムパスワードなどが提供されており、個々の情報セキュリティポリシーに合わせて選択できる。

現在は、バージョン1とバージョン2の2種類のプロトコルが共存している。脆弱性が発見されているため、バージョン1の利用は推奨されない。商用アプリケーションやフリーソフトウェアなど幾つかの実装があり、特許や互換性の問題などでやや混乱があったが、2006年SSHプロトコルおよびその関連技術がRFCとして制定された[1]。ただ、2008年の時点でもっとも一般に普及しているのは、オープンソースで開発されているOpenSSH[2]Linuxなどでも標準的に利用されているため、現在では単にSSHと言った場合、OpenSSHの実装系を指すことが多い。

https://ja.wikipedia.org/wiki/Secure_Shell

ラズベリーパイのトップ画面から、

メニューバーのラズベリーパイマーク→設定→Raspberry Piの設定→インターフェース

と進み、SSHの横のチェックボックスを有効にして「OK」をクリックします。

次に、MacBookのターミナルから以下のコマンドを入力します。

ssh pi@raspberrypi.local
もしくは
ssh [IPアドレス]

すると以下の様に表示されるので、「yes」と入力してreturnしてください

The authenticity of host 'raspberrypi.local (aa00::00aa:0aa0:0000:aa0a%aa0)' can't be established.
ECDSA key fingerprint is SHA256:0xxxxx+Yyyyyyyy+zzzzzzzz.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

これで~/.ssh/known_hostsにfingerprintが記載されるので、次回からはssh接続をしなくてもvnc接続できるようになります。

以下のようにパスワードを聞かれるので、ラズパイのパスワード(インストール時のもの)を入力します

Warning: Permanently added 'raspberrypi.local,aa00::00aa:0aa0:0000:aa0a%aa0' (ECDSA) to the list of known hosts.
pi@raspberrypi.local's password: 

以下の様に出力されれば、接続できています。

Linux raspberrypi 5.10.11-v7+ #1399 SMP Thu Jan 28 12:06:05 GMT 2021 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri Feb 26 21:10:46 2021
pi@raspberrypi:~ $

ためしにコマンドを入力してみます。

pi@raspberrypi:~ $ ls
Bookshelf  Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos

MacBookからラズパイにSSH接続できていることが確認できました。

VNCでグラフィカルにリモート操作する

SSH接続ができるようになって、CUIで操作できるようになりましたが、GUIでも操作できるようになれば便利です。

グラフィカルに操作するためにVNC接続をしていきます。

Virtual Network Computing(ヴァーチャル・ネットワーク・コンピューティング、略称VNC)は、ネットワーク上の離れたコンピュータを遠隔操作するためのRFBプロトコルを利用する、リモートデスクトップソフトである。VNCクロスプラットフォームなソフトウェアとして開発されているため、インストールされているマシン同士はOSなどのプラットフォームの種類に依存することなく通信できる。

VNCの最初のバージョンは Olivetti & Oracle Research Lab によって開発されたが、オリジナル版のソースコードGPL方式のライセンス下でオープンソースとして公開されているため、現在では様々な派生ソフトが誕生している。

VNC通信プロトコルとして使用されるRFB Protocolは非常に簡素なプロトコルで、サーバ側はピクセルデータ化した画面を小さな長方形に分け、位置を指定してクライアントに送信するだけである。しかし、この方法は非常に単純であると同時に、大きな帯域幅を使用する。そこで、帯域幅の削減のために様々な方法が編み出された。様々なエンコード形式やデータ圧縮がこれに該当するが、最も単純な方法は、前の送信と比較して変更された部分のみを送信する方法である。これはマウスポインタの移動のみが行われた場合などには非常に有効だが、全体的な変化の大きい動画再生をしている画面などを送信するには適していない。それはネットワークが十分に高速であっても変わらない。なお、このような拡張プロトコルを使用するには、サーバとクライアント双方のソフトウェアがその形式に対応している必要がある。

デフォルトではTCPの5900から5906までのポート番号を使用する。また、ウェブブラウザ上で動作するJava版のクライアントは、既定で5800から5806までのポートを使用する。これらは設定によって変更可能である。通常はポート毎に(物理デスクトップとも)独立した仮想デスクトップセッションを提供する。同じポートにアクセスする複数のクライアントは同じデスクトップを共有する。

<中略>

VNCは通信に暗号を用いないため、パスワード等を含め全て平文で送信される。このため、Telnet等と同じく危険なプロトコルであり、使用には注意が必要である。

ただし、よりセキュリティの高いSSHVPNをトンネルして接続することも出来る。また、派生バージョンでは、NTLM認証が可能であったりと、セキュリティ面の強化が図られているものもある。

全てのサーバソフトウェアと同じように、外部からの使用するポートへの通信がファイアウォールルーターでブロックされていた場合は、VNCを利用することは出来ない。

https://ja.wikipedia.org/wiki/Virtual_Network_Computing

ラズベリーパイのトップ画面から、

メニューバーのラズベリーパイマーク→設定→Raspberry Piの設定→インターフェース

と進み、VNCの横のチェックボックスを有効にして「OK」をクリックします。

Macには標準でVNCクライアントの機能がありますが、ラズパイのVNCサーバーに対応していません。そこで、RealVNCのクライアントVNC Viewerでアクセスします。https://www.realvnc.com/en/connect/download/viewer/からダウンロードして、インストールできます。

VNC Viewerを起動したら、上部にある入力欄に「raspberrypi.local」またはIPアドレスを入力してreturnを押します。

Usernameに「pi」、Passwordにラズパイのパスワードを入力して「OK」をクリックします。

ログインすると、ラズベリーパイのデスクトップ画面が表示されます。

このVNC Viewer画面上部にマウスを移動させると、メニューボタンが降りてきます。

真ん中の「Transfer files」ボタンから、MacBook→ラズパイにファイルを送信することができます。

これでラズパイを使うのに、マウスとキーボードが必要なくなりました。