このページでは、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
)
準備
接続するワークステーションがない場合は、ワークステーションを設定します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
接続先のワークステーションに Cloud Workstations ユーザーの 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 のポート。有効なポート番号は1024
~65535
です。--local-host-port
フラグを省略するか、ポート0
を指定すると、未使用のポートが自動的に選択されます。WORKSTATION_NAME
: ワークステーションの名前。
(省略可)基盤となる ssh
実装にフラグと位置を渡すには、コマンドの 2 個のダッシュ(--
)の後に追加します。
TCP トンネルを使用して任意の TCP トラフィックをワークステーションに転送する
ssh
以外の TCP アプリケーションを使用してワークステーションに接続するには、gcloud workstations start-tcp-tunnel
コマンドを使用します。
次の
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 のポート。有効なポート番号は1024
~65535
です。--local-host-port
フラグを省略するか、ポート0
を指定すると、未使用のポートが自動的に選択されます。WORKSTATION_NAME
: ワークステーションの名前。WORKSTATION_PORT
: トラフィックの送信先のワークステーションのポート。事前構成された Cloud Workstations イメージには、ワークステーション ポート22
で実行される SSH サーバーが含まれています。
gcloud
CLI コマンドは、ワークステーションとの接続テストを実行し、トンネルを開いて、ポート番号を表示します。Listening on port [LOCAL_PORT].
localhost:LOCAL_PORT
に送信されたすべてのトラフィックは、ワークステーションに転送されます。このポートには、ローカル コンピュータで実行しているアプリケーションだけがアクセスできます。gcloud
CLI を実行したままにして、別のターミナルを開き、ワークステーションに接続するアプリケーションを実行します。例えば、ポート WORKSTATION_PORT を提供するサーバーをワークステーションで実行しており、前のステップで、ローカルのポート LOCAL_PORT とワークステーションのポート WORKSTATION_PORT の間でトラフィックを転送する TCP トンネルを作成した場合、ローカルマシンで
curl
を実行して、ワークステーションのサーバーに接続することができます。curl localhost:LOCAL_PORT Hello, world!
完了したら、TCP トンネルを開始したターミナルに戻り、Ctrl+C キーを押して
gcloud
CLI を中断します。
別のポートで SSH サーバーを使用する
また、カスタム コンテナ イメージでは、任意のポートで SSH サーバーを使用できます。gcloud
CLI トンネルからの接続をサポートするには、カスタム SSH サーバーを構成してパスワード認証を許可し、ターゲット ユーザーに空のパスワードを設定する必要があります。Cloud Workstations は、Cloud IAM を使用して、承認されたトラフィックのみが SSH サーバーに送信されるようにします。
次のステップ
- カスタム コンテナ イメージの SSH セッションでコンテナ環境変数を設定する
- カスタム コンテナ イメージの X11 転送を有効にする