このページでは、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
)
準備
接続するワークステーションがまだ存在しない場合は、ワークステーションを設定します。
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
(省略可): トラフィックの送信元となるローカルホスト ポート。有効なポート番号は1024
~65535
です。--local-host-port
フラグを省略するか、0
のポートを指定する場合は、未使用のポートが自動的に選択されます。WORKSTATION_NAME
: ワークステーションの名前。
省略可: フラグと位置引数を基盤となる ssh
実装に渡すには、ダブルダッシュ(--
)の後にコマンドに追加します。
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
(省略可): トラフィックの送信元となるローカルホスト ポート。有効なポート番号は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 転送を有効にする