トンネルを開き、ブラウザベースの SSH を使用してリモートデバイスにアクセスします。 - AWS IoT Core

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

トンネルを開き、ブラウザベースの SSH を使用してリモートデバイスにアクセスします。

トンネルを作成するには、クイックセットアップ方式または手動セットアップ方式を使用できます。このチュートリアルでは、クイックセットアップ方式を使用してトンネルを開き、ブラウザベースの SSH を使用してリモートデバイスに接続する方法を説明しています。手動セットアップ方式を使用してトンネルを開く方法を示す例については、「手動セットアップを使用してトンネルを開き、リモートデバイスに接続する」を参照してください。

クイックセットアップ方式を使用すると、編集可能なデフォルト構成で新しいトンネルを作成できます。ウェブベースのローカルプロキシが設定され、アクセストークンは MQTT を使用してリモート送信先デバイスに自動的に配信されます。トンネルを作成したら、コンソール内のコマンドラインインターフェイスを使用してリモートデバイスとのやり取りを開始できます。

クイックセットアップ方式では、リモートデバイスにアクセスする送信先サービスとして SSH を使用する必要があります。さまざまなセットアップ方式の詳細については、「トンネルのセットアップ方式」を参照してください。

クイックセットアップ方式の前提条件

  • リモートデバイスが背後にあるファイアウォールは、ポート 443 でアウトバウンドトラフィックを許可する必要があります。作成されたトンネルは、このポートを使用してリモートデバイスに接続します。

  • デバイスゲートウェイに接続し、MQTT トピックサブスクリプションで設定されている IoT AWS IoT デバイスエージェント(を参照IoT エージェントスニペット)がリモートデバイス上で実行されている。詳細については、「AWS IoT デバイスをデバイスゲートウェイに接続する」を参照してください。

  • リモートデバイスで SSH デーモンが実行されている必要があります。

トンネルを開く

、 AWS IoT API リファレンス AWS Management Console、またはを使用して安全なトンネルを開くことができます AWS CLI。送信先名はオプションで設定できますが、このチュートリアルでは不要です。送信先を設定すると、MQTT を使用して、セキュアトンネリングによってアクセストークンをリモートデバイスに自動的に配信します。詳細については、「AWS IoT コンソールでのトンネル作成方法」を参照してください。

コンソールを使用してトンネルを開くには
  1. AWS IoT コンソールのトンネルハブ に移動し、[Create tunnel] (トンネルの作成) を選択します。

    AWS IoT コンソールには、トンネルの作成、閉鎖、削除のオプションを含む空のトンネルリストが表示されます。
  2. このチュートリアルでは、トンネルの作成方式として [Quick setup] (クイックセットアップ) を選択し、[Next] (次へ) を選択します。

    注記

    作成したモノの詳細ページからセキュアトンネルを作成する場合、新しいトンネルを作成するか、既存のトンネルを使用するかを選択できます。詳細については、「リモートデバイス用のトンネルを開き、ブラウザベースの SSH を使用する」を参照してください。

    SSH を使ったクイックセットアップまたは手動セットアップのオプションを含むセットアップ方法のセクションで、クイックセットアップではプロキシとアクセストークンが自動的に設定されることを説明しています。
  3. トンネル設定の詳細を確認して確定します。トンネルを作成するには、[Confirm and create] (確認と作成) を選択します。これらの詳細を編集する場合は、[Previous] (前へ) を選択して前のページに戻り、確認してトンネルを作成します。

    注記

    クイックセットアップを使用する場合は、サービス名は編集できません。[Service] (サービス) として、[SSH] を使用する必要があります。

  4. トンネルを作成するには、[Done] (完了) を選択します。

    このチュートリアルでは、送信元または送信先のアクセストークンをダウンロードする必要はありません。これらのトークンは、トンネルに接続するためだけに使用できます。トンネルが切断された場合は、トンネルに再接続するために新しいトークンを生成してリモートデバイスに送信できます。詳細については、「トンネルのアクセストークンを再送信する」を参照してください。

    安全なトンネル接続を確立するための送信元と送信先のアクセストークンと、必要に応じてトークンをローテーションして再送信する手順を示すダイアログが表示されます。
API を使用してトンネルを開くには

新しいトンネルを開くには、OpenTunnelAPI オペレーションを使用できます。

注記

クイックセットアップ方式を使用してトンネルを作成できるのは、 AWS IoT コンソールからのみです。 AWS IoT API Reference API またはを使用する場合 AWS CLI、手動設定方式が使用されます。作成した既存のトンネルを開いてから、クイックセットアップ方式を使用するようにトンネルの設定方式を変更できます。詳細については、「既存のトンネルを開き、ブラウザベースの SSH を使用する」を参照してください。

API オペレーションを実行する方法の例を次に示します。オプションで、モノの名前と送信先サービスを指定する場合は、DestinationConfig パラメータを使用します。このパラメータの使用方法を示す例については、「リモートデバイス用の新しいトンネルを開く」を参照してください。

aws iotsecuretunneling open-tunnel

このコマンドを実行すると、新しいトンネルの作成と、送信元と送信先のアクセストークンが提供されます。

{ "tunnelId": "01234567-89ab-0123-4c56-789a01234bcd", "tunnelArn": "arn:aws:iot:us-east-1:123456789012:tunnel/01234567-89ab-0123-4c56-789a01234bcd", "sourceAccessToken": "<SOURCE_ACCESS_TOKEN>", "destinationAccessToken": "<DESTINATION_ACCESS_TOKEN>" }

ブラウザベースの SSH を使用する

クイックセットアップ方式でトンネルを作成し、送信先デバイスがトンネルに接続されると、ブラウザベースの SSH を使用してリモートデバイスにアクセスできます。ブラウザベースの SSH を使用すると、コンソール内のコンテキスト内のコマンドラインインターフェイスにコマンドを入力することで、リモートデバイスと直接通信できます。この機能により、コンソール外でターミナルを開いたり、ローカルプロキシを設定したりする必要がないため、リモートデバイスとのやり取りがしやすくなります。

ブラウザベースの SSH を使用するには
  1. AWS IoT コンソールのトンネルハブ に移動して、作成したトンネルを選択し、その詳細を表示します。

  2. [Secure Shell (SSH)] (セキュアシェル (SSH)) セクションを展開し、[Connect] (接続) を選択します。

  3. ユーザー名とパスワードを入力して SSH 接続を認証するか、デバイスのプライベートキーを使用してより安全な認証を行うかを選択します。プライベートキーを使用して認証する場合は、PEM (PKCS#1、PKCS#8) および OpenSSH 形式の RSA、DSA、ECDSA (nistp-*)、および ED25519 キータイプを使用できます。

    • ユーザー名とパスワードを使用して接続するには、[Use password] (パスワードを使用する) を選択します。その後、ユーザー名とパスワードを入力して、ブラウザ内 CLI の使用を開始できます。

    • 送信先デバイスのプライベートキーを使用して接続するには、[Use private key] (プライベートキーを使用する) を選択します。ユーザー名を指定してデバイスのプライベートキーファイルをアップロードし、[Connect] (接続) を選択してブラウザ内 CLI の使用を開始します。

      プライベートキーを使用してブラウザ CLI 経由で接続するためのフォームダイアログボックス。ユーザー名フィールドと、事前に選択したプライベートキーファイルを選択または使用するオプションが表示されます。

ローカルプロキシが既に設定されているため、SSH 接続への認証が完了すると、コマンドの入力やブラウザ CLI によるデバイスとのやり取りをすぐに開始できます。

アプリケーションの状態と設定を管理するための React フックを示すコードスニペット。 JavaScript

トンネルの継続時間が経過してもブラウザ CLI が開いたままになっていると、タイムアウトになり、コマンドラインインターフェイスが切断される可能性があります。トンネルを複製して別のセッションを開始し、コンソール自体でリモートデバイスとやり取りすることができます。

ブラウザベースの SSH を使用する場合のトラブルシューティング

ブラウザベースの SSH を使用する際に発生する可能性のある問題のトラブルシューティング方法を次に示します。

  • コマンドラインインターフェイスの代わりにエラーが表示される

    送信先のデバイスが切断されたため、エラーが表示されている可能性があります。[Generate new access tokens] (新しいアクセストークンの生成) を選択して新しいアクセストークンを生成し、MQTT を使用してそのトークンをリモートデバイスに送信できます。この新しいトークンを使用して、トンネルに再接続できます。トンネルに再接続すると、履歴がクリアされ、コマンドラインセッションが更新されます。

  • プライベートキーを使用して認証すると、トンネルが切断されたというエラーが表示される

    プライベートキーが送信先デバイスで許可されなかったことが原因で、エラーが表示されている可能性があります。このエラーをトラブルシューティングするには、認証用にアップロードしたプライベートキーファイルを確認してください。それでもエラーが表示される場合は、デバイスのログを確認してください。リモートデバイスに新しいアクセストークンを送信して、トンネルに再接続してみることもできます。

  • セッション使用中にトンネルが閉じた

    トンネルが指定した継続時間を超えて開いたままになっていたために閉じられた場合、コマンドラインセッションが切断される可能性があります。トンネルが閉じた場合、再び開くことはできません。再接続するには、デバイスに対して別のトンネルを開く必要があります。

    トンネルを複製することで、閉じたトンネルと同じ構成の新しいトンネルを作成できます。閉じたトンネルはコンソールから複製できます。 AWS IoT トンネルを複製するには、閉じているトンネルを選択して詳細を表示し、[Duplicate tunnel] (トンネルの複製) を選択します。使用するトンネルの継続時間を指定し、新しいトンネルを作成します。

クリーンアップ

  • トンネルを閉じる

    トンネルの使用が終わったら、トンネルを閉じることをお勧めします。トンネルを指定した継続期間を超えて開いたままにしていると、閉じた状態になることもあります。トンネルが閉じた場合、再び開くことはできません。閉じたトンネルを選択して、[Duplicate tunnel] (トンネルの複製) を選択すれば、トンネルを複製できます。使用するトンネルの継続時間を指定し、新しいトンネルを作成します。

    • AWS IoT コンソールから個々のトンネルまたは複数のトンネルを閉じるには、トンネルハブに移動し、閉じるトンネルを選択して、[Close tunnel] (トンネルを閉じる) を選択します。

    • AWS IoT API Reference API を使用して 1 つまたは複数のトンネルを閉じるには、API を使用します。CloseTunnel

      aws iotsecuretunneling close-tunnel \ --tunnel-id "01234567-89ab-0123-4c56-789a01234bcd"
  • トンネルの削除

    トンネルはから完全に削除できます。 AWS アカウント

    警告

    削除の操作は永続的で、元には戻せません。

    • AWS IoT コンソールから個々のトンネルまたは複数のトンネルを削除するには、トンネルハブに移動し、削除するトンネルを選択して、[Delete tunnel] (トンネルを削除する) を選択します。

    • AWS IoT API Reference API を使用して 1 つまたは複数のトンネルを削除するには、API を使用します。CloseTunnelAPI を使用する場合は、delete フラグを true に設定します。

      aws iotsecuretunneling close-tunnel \ --tunnel-id "01234567-89ab-0123-4c56-789a01234bcd" --delete true