[AWS IoT Core] Greengrass V2 のセキュアトンネルコンポーネントを使用して Raspberry Pi にブラウザで SSH してみました

2022.12.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

1 はじめに

CX 事業本部のデリバリー部の平内(SIN)です。

AWS IoT Core の セキュアトンネリングでは、ファイアウォールの背後で動作するデバイスに、SSH 接続することが可能ですが、こちら、サービス開始時に比べると、利用費も下がったことから、リーズナブルに利用可能になったと思います。

AWS IoT Device Management が Secure Tunneling の 80% の値下げを発表


https://aws.amazon.com/jp/iot-device-management/pricing/?nc1=h_ls

Greengrass V2 では、各種機能の追加が、コンポーネント単位で行えますが、パブリックなコンポーネントとして用意されている「セキュアトンネルコンポーネント」を使用すると、「セキュアトンネリング」で超簡単に SSH 接続できてしまいます。

今回は、RaspberryPi に Greengrass V2 をセットアップし、セキュアトンネルコンポーネントを使用して、ブラウザから軽易に SSH する動作を確認してみました。

2 Raspberry Pi

RaspberryPi のイメージ作成は、最近は、アプリから行えるようになっていまが、今回は、2022-09-22 リリースの Desktop 版を使用しました。

イメージ作成前に、いくつかに設定が可能になっていますが、SSH を有効にし、ID とパスワードで接続できるようにしました。

OS 等のバージョンは、以下のとおりとなりました。

$ cat /proc/cpuinfo  | grep Revision
Revision    : d03114

$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 11 (bullseye)
Release:    11
Codename:   bullseye

$ uname -a
Linux raspberrypi 5.15.61-v7l+ #1579 SMP Fri Aug 26 11:13:03 BST 2022 armv7l GNU/Linux

3 Greengrass V2

RaspberryPI に Greengrass V2 をセットアップした手順は、以下のとおりです。

なお、使用したイメージには、Java ランタイムが含まれていなかったため、別途インストールしています。

$ sudo apt install default-jdk
$ java -version
openjdk version "11.0.16" 2022-07-19
OpenJDK Runtime Environment (build 11.0.16+8-post-Debian-1deb11u1)
OpenJDK 64-Bit Server VM (build 11.0.16+8-post-Debian-1deb11u1, mixed mode)

インストールが完了すると、greengrass-cliのバージョンが確認できます。

$ /greengrass/v2/bin/greengrass-cli -V
Greengrass CLI Version: 2.9.1

また、AWS コンソールで、コアデバイスとして表示されるようになります。

4 aws.greengrass.SecureTunneling

続いて、セキュアトンネリングコンポーネントをデプロイします。

AWS IoT のコンソールから、Greengrass デバイス - コンポーネント - パブリックコンポーネントとたどり、aws.greengrass.SecureTunnelingを選択します。

パラメータ等は、全てデフォルトのままでデプロイしました。

依存関係で、aws.greengrass.Nucleusが必要となるため、存在しない場合、一緒に追加されます。

ここまでで、Greengrass 側の準備は完了です。

5 トンネル

新規のトンネルは、管理 - モノ を選択し、右上の「安全なトンネルを作成する」から作成します。

「トンネル作成方法を選択」では、新しいトンネルを作成 - クイックセットアップ (SSH) をチェックします。

「確認して作成」ボタンを押すとトンネル作成は完了です。

ここで、RaspberryPi イメージ作成時に設定した、ユーザー名とパスワードで接続します。

ブラウザ上のコンソールで SSH 接続での操作が可能になります。

6 最後に

今回は、RaspberryPi に Greengrass V2 をセットアップし、セキュアトンネルコンポーネントで、ブラウザから SSH 接続してみました。

Greengrass V2 のコンポーネントを使用すると、あっという間に SSH 接続環境が構成できてしまいます。

セキュアトンネリングでは、「ローカルプロキシ」を使用した接続も可能ですが、こちらは、別途インストール等が必要で、やや、準備コストが高いかもしれません。

7 参考リンク


AWS IoT セキュアトンネリングを使用してリモートデバイスに接続する
AWS IoT セキュアトンネリングを使ってローカルの Raspberry Pi にリモートから接続してみた
ファイアウォールを超えてデバイスに接続! AWS IoT セキュアトンネリングを試してみた
[AWS IoT Greengrass V2] RaspberryPI にインストールしてみました