このページでは、gcloud CLI を使用して、SSH(またはその他の TCP プロトコル)を使用してローカルマシンからワークステーションに接続する方法について説明します。
Cloud Workstations は、トンネルを使用して、ワークステーションをインターネットに公開することなく、ローカルマシンのポートとワークステーションのポートの間で TCP トラフィックを転送します。接続は、gcloud CLI の認証情報を使用して認証され、ターゲット ワークステーションの IAM ポリシーに沿って承認されます。
ローカルポートとワークステーション間で TCP トンネルが確立されたら、トンネルを使用して SSH クライアント、curl、または TCP を使用する他のアプリケーションからトラフィックを転送できます。
利便性を高めるため、Cloud Workstations には gcloud workstations ssh コマンドが用意されています。このコマンドを使用すると、TCP トンネルを確立し、単一の gcloud CLI コマンドで SSH クライアントを実行できます。
その他のユースケースでは、gcloud workstations start-tcp-tunnelコマンドを使用して、TCP トンネルを確立し、別のターミナルでトンネルを使用するアプリケーションを実行します(たとえば、curl )
準備
接続するワークステーションがまだ存在しない場合は、ワークステーションを設定します。
Google Cloud CLI をインストールします。 インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。
gcloud init外部 ID プロバイダ(IdP)を使用している場合は、まず フェデレーション ID を使用して
gcloudCLI にログインする必要があります。接続するワークステーションに Cloud Workstations ユーザーの IAM ロールがあることを確認します。
PROJECT_ID: ワークステーションを含むプロジェクトの Google Cloud プロジェクト ID。省略すると、現在のプロジェクトが使用されます。REGION: ワークステーションのクラスタが配置されているリージョン(us-central1など)。CLUSTER_NAME: ワークステーションを含むワークステーション クラスタの名前。CONFIG_NAME: このワークステーションを含むワークステーション構成の名前。WORKSTATION_PORT(省略可): トラフィックの送信先のワークステーションのポート。省略すると、トラフィックはポート22に送信されます。事前構成済みの Cloud Workstations イメージには、ワークステーション ポート22で実行される SSH サーバーが含まれています。LOCAL_PORT(省略可): トラフィックの送信元となるローカルホスト ポート。有効なポート番号は1024~65535です。--local-host-portフラグを省略するか、0のポートを指定すると、未使用のポートが自動的に選択されます。WORKSTATION_NAME: ワークステーションの名前。次の
gcloudCLI コマンドを実行して、認証済みの 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(省略可): トラフィックの送信元となるローカルホスト ポート。有効なポート番号は1024~65535です。--local-host-portフラグを省略するか、0のポートを指定すると、未使用のポートが自動的に選択されます。WORKSTATION_NAME: ワークステーションの名前。WORKSTATION_PORT: トラフィックの送信先のワークステーションのポート。事前構成済みの Cloud Workstations イメージには、ワークステーション ポート22で実行される SSH サーバーが含まれています。
gcloudCLI コマンドは、ワークステーションとの接続テストを実行し、トンネルを開き、ポート番号を表示します。Listening on port [LOCAL_PORT].localhost:LOCAL_PORTに送信されたすべてのトラフィックは、ワークステーションに転送されます。このポートには、ローカル コンピュータで実行しているアプリケーションだけがアクセスできます。gcloudCLI を実行したまま、別のターミナルを開いて、ワークステーションに接続するアプリケーションを実行します。例えば、ポート WORKSTATION_PORT を提供するサーバーをワークステーションで実行しており、前のステップで、ローカルのポート LOCAL_PORT とワークステーションのポート WORKSTATION_PORT の間でトラフィックを転送する TCP トンネルを作成した場合、ローカルマシンで
curlを実行して、ワークステーションのサーバーに接続することができます。curl localhost:LOCAL_PORT Hello, world!完了したら、TCP トンネルを開始したターミナルに戻り、Control+C キーを押して
gcloudCLI を中断します。- カスタム コンテナ イメージの SSH セッションでコンテナ環境変数を設定する
- カスタム コンテナ イメージの X11 転送を有効にする
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
次の値を置き換えます。
省略可: フラグと位置引数を基盤となる ssh 実装に渡すには、二重ダッシュ(--)の後にコマンドに追加します。
TCP トンネルを使用して、任意の TCP トラフィックをワークステーションに転送する
ssh 以外の TCP アプリケーションを使用してワークステーションに接続するには、gcloud workstations start-tcp-tunnel コマンドを使用します。
異なるポートで SSH サーバーを使用する
カスタム コンテナ イメージは、任意のポートで SSH サーバーを使用することもできます。gcloud CLI トンネルからの接続をサポートするには、カスタム SSH サーバーを構成してパスワード認証を許可し、ターゲット ユーザーに空のパスワードを設定する必要があります。Cloud Workstations は Cloud IAM を使用して、承認されたトラフィックのみが SSH サーバーに送信されるようにします。