SSH サポート

このページでは、gcloud CLI を使用して、SSH(または他の TCP プロトコル)でローカルマシンからワークステーションに接続する方法について説明します。

Cloud Workstations は、トンネルを使用して、ワークステーションをインターネットに露出せずに、ローカルマシンのポートとワークステーションのポートの間で TCP トラフィックを転送します。接続は、gcloud CLI の認証情報を使用して認証され、ターゲット ワークステーションの IAM ポリシーに沿って承認されます。

ローカルポートとワークステーションの間で TCP トンネルが確立されると、SSH トンネルを使用して、SSH クライアント、curl、または TCP を使用するその他のアプリケーションからトラフィックを転送できます。

Cloud Workstations には、便宜上、gcloud workstations ssh コマンドが用意されています。このコマンドは、TCP トンネルを確立して、単一の gcloud CLI コマンドで SSH クライアントを実行します。

その他のユースケースでは、gcloud workstations start-tcp-tunnelコマンドを使用して、TCP トンネルを確立し、別のターミナルでトンネルを使用するアプリケーションを実行します(たとえば、curl

準備

  1. 接続するワークステーションがない場合は、ワークステーションを設定します。

  2. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

    gcloud init

  3. 接続先のワークステーションに Cloud Workstations ユーザーの IAM ロールがあることを確認します。

    [IAM] に移動

SSH を使用してワークステーションに接続する

ワークステーションへの安全な SSH 接続を確立するには、gcloud workstations ssh コマンドを使用します。これにより、TCP トンネルが開始され、SSH クライアントが実行されます。

コマンドをコピー貼り付けバッファにコピーするには、コードサンプルをコピーをクリックし、ローカルのターミナル ウィンドウにコマンドを貼り付けます。

gcloud workstations ssh \
    --project=PROJECT_ID \
    --region=REGION \
    --cluster=CLUSTER_NAME \
    --config=CONFIG_NAME  \
    --port=WORKSTATION_PORT  \
    --local-host-port=localhost:LOCAL_PORT  \
    WORKSTATION_NAME

次の値を置き換えます。

  • PROJECT_ID: ワークステーションを含むプロジェクトの Google Cloud プロジェクト ID。省略した場合は、現在のプロジェクトが使用されます。

  • REGION: ワークステーションのクラスタが配置されているリージョン(例: us-central1)。

  • CLUSTER_NAME: ワークステーションを含むワークステーション クラスタの名前。

  • CONFIG_NAME: このワークステーションを含むワークステーション構成の名前。

  • WORKSTATION_PORT(省略可): トラフィックを送信する先のワークステーションのポート。省略した場合、トラフィックはポート 22 に送信されます。事前構成されたすべての Cloud Workstations イメージには、ワークステーション ポート 22 で実行される SSH サーバーが含まれています。

  • LOCAL_PORT(省略可): トラフィックの送信元となる localhost のポート。有効なポート番号は 102465535 です。--local-host-port フラグを省略するか、ポート 0 を指定すると、未使用のポートが自動的に選択されます。

  • WORKSTATION_NAME: ワークステーションの名前。

(省略可)基盤となる ssh 実装にフラグと位置を渡すには、コマンドの 2 個のダッシュ(--)の後に追加します。

TCP トンネルを使用して任意の TCP トラフィックをワークステーションに転送する

ssh 以外の TCP アプリケーションを使用してワークステーションに接続するには、gcloud workstations start-tcp-tunnel コマンドを使用します。

  1. 次の gcloud CLI コマンドを実行して、認証済みの TCP トンネルを作成します。

    コマンドをコピー貼り付けバッファにコピーするには、コードサンプルをコピーをクリックし、ローカルのターミナル ウィンドウにコマンドを貼り付けます。

    gcloud workstations start-tcp-tunnel \
        --project=PROJECT_ID \
        --region=REGION \
        --cluster=CLUSTER_NAME \
        --config=CONFIG_NAME \
        --local-host-port=localhost:LOCAL_PORT \
        WORKSTATION_NAME \
        WORKSTATION_PORT
    

    次の値を置き換えます。

    • PROJECT_ID: ワークステーションを含むプロジェクトの Google Cloud プロジェクト ID。省略した場合は、現在のプロジェクトが使用されます。

    • REGION: ワークステーションのクラスタが配置されているリージョン(例: us-central1)。

    • CLUSTER_NAME: ワークステーションを含むワークステーション クラスタの名前。

    • CONFIG_NAME: このワークステーションを含むワークステーション構成の名前。

    • LOCAL_PORT(省略可): トラフィックの送信元となる localhost のポート。有効なポート番号は 102465535 です。--local-host-port フラグを省略するか、ポート 0 を指定すると、未使用のポートが自動的に選択されます。

    • WORKSTATION_NAME: ワークステーションの名前。

    • WORKSTATION_PORT: トラフィックの送信先のワークステーションのポート。事前構成された Cloud Workstations イメージには、ワークステーション ポート 22 で実行される SSH サーバーが含まれています。

  2. gcloud CLI コマンドは、ワークステーションとの接続テストを実行し、トンネルを開いて、ポート番号を表示します。

    Listening on port [LOCAL_PORT].
    

    localhost:LOCAL_PORT に送信されたすべてのトラフィックは、ワークステーションに転送されます。このポートには、ローカル コンピュータで実行しているアプリケーションだけがアクセスできます。

  3. gcloud CLI を実行したままにして、別のターミナルを開き、ワークステーションに接続するアプリケーションを実行します。

    例えば、ポート WORKSTATION_PORT を提供するサーバーをワークステーションで実行しており、前のステップで、ローカルのポート LOCAL_PORT とワークステーションのポート WORKSTATION_PORT の間でトラフィックを転送する TCP トンネルを作成した場合、ローカルマシンで curl を実行して、ワークステーションのサーバーに接続することができます。

    curl localhost:LOCAL_PORT
    Hello, world!
    
  4. 完了したら、TCP トンネルを開始したターミナルに戻り、Ctrl+C キーを押して gcloud CLI を中断します。

別のポートで SSH サーバーを使用する

また、カスタム コンテナ イメージでは、任意のポートで SSH サーバーを使用できます。gcloud CLI トンネルからの接続をサポートするには、カスタム SSH サーバーを構成してパスワード認証を許可し、ターゲット ユーザーに空のパスワードを設定する必要があります。Cloud Workstations は、Cloud IAM を使用して、承認されたトラフィックのみが SSH サーバーに送信されるようにします。

次のステップ