VS Codeのエージェントモードを拡張するには、を試してください!

リモートトンネルを使用した開発

Visual Studio Code の Remote - Tunnels 拡張機能を使用すると、デスクトップ PC や仮想マシン (VM) などのリモートマシンにセキュアなトンネル経由で接続できます。SSH の要件なしに、どこからでも VS Code クライアントからそのマシンに接続できます。

トンネリングは、Microsoft dev tunnels を介して、あるネットワークから別のネットワークへデータを安全に送信します。

この拡張機能は、コマンドや他の拡張機能をリモートマシンで直接実行するため、VS Code クライアントマシンにソースコードを置く必要がなくなります。この拡張機能は、VS Code Server をリモート OS にインストールします。サーバーは、リモート OS 上の既存の VS Code インストールとは独立しています。

Remote Tunnels architecture overview

VS Code は、コードがどこでホストされていても、完全な IntelliSense (補完)、コードナビゲーション、デバッグなどの**ローカル品質の開発エクスペリエンス**を提供できます。

はじめに

トンネルを利用するには 2 つのパスがあります。

これらのパスはいずれも同じトンネリング機能をもたらします。最適なツールを使用できます。リモートマシンに完全な VS Code デスクトップをインストールできない場合は、CLI が最適な選択肢です。すでに VS Code で作業していて、現在のマシンでトンネリングを有効にしたい場合は、VS Code デスクトップ UI を使用すると便利です。

以下のセクションでは、両方のパスについて説明します。

「code」CLI の使用

code CLI を介してトンネルを作成および使用できます。

  1. VS Code クライアントから開発したいリモートマシンに code CLI をインストールします。CLI は、VS Code クライアントとリモートマシンの間にトンネルを確立します。CLI は VS Code Desktop に自動的に組み込まれており、追加のセットアップは必要ありません。

    代替ダウンロード

    あるいは、ダウンロードページで、VS Code デスクトップインストールとは別に、スタンドアロンインストールを介して CLI を入手することもできます。

    VS Code download options with CLI highlighted

    リモートマシンのターミナルから CLI をインストールおよび展開することもできます。これは、リモートマシンに UI がない場合に特に役立ちます。

    curl -Lk 'https://vscode.dokyumento.jp/sha/download?build=stable&os=cli-alpine-x64' --output vscode_cli.tar.gz
    
    tar -xf vscode_cli.tar.gz
    

    注: スタンドアロンまたはターミナルインストールを使用している場合、次のセクションのコマンドは code ではなく ./code で始まります。

  2. tunnel コマンドで安全なトンネルを作成する

    code tunnel
    

    このコマンドは、このマシンに VS Code Server をダウンロードして起動し、それからそこへのトンネルを作成します。

    注: マシンで初めてトンネルを開始するときに、サーバーライセンス条項に同意するよう求められます。プロンプトを避けるために、コマンドラインで --accept-server-license-terms を渡すこともできます。

  3. この CLI は、https://vscode.dev/tunnel/<machine_name>/<folder_name> のように、このリモートマシンに紐付けられた vscode.dev URL を出力します。この URL を任意のクライアントで開くことができます。

  4. このクライアントで初めて vscode.dev URL を開くと、https://github.com/login/oauth/authorize... の URL で GitHub アカウントにログインするように求められます。これは、適切なリモートマシンセットにアクセスできることを確認するために、トンネリングサービスに認証します。

VS Code UI の使用

  1. トンネルアクセスをオンにしたいリモートマシンで VS Code を開きます。

  2. 以下の画像に示すように、VS Code のアカウントメニューで、**リモートトンネルアクセスをオンにする**オプションを選択します。また、VS Code でコマンドパレット (F1) を開き、**Remote Tunnels: Turn on Remote Tunnel Access...** コマンドを実行することもできます。

    Turn on Remote Tunnel Access via the VS Code Account menu

  3. GitHub にログインするよう求められます。ログインすると、現在のマシンでトンネルが起動し、このマシンにリモートで接続できるようになります。

    Prompt that remote tunnel access is enabled

  4. 選択したクライアントで、上記の通知から vscode.dev リンクを開いてコーディングを開始できます。

注: リモートマシンは、VS Code がそこで実行されている間のみトンネル経由で到達可能です。VS Code を終了すると、VS Code を再度開始するか、code tunnel CLI コマンドを実行するまで、トンネル経由で到達することはできなくなります。

Remote Tunnels 拡張機能

code CLI または VS Code UI を介して開く vscode.dev インスタンスには、Remote - Tunnels 拡張機能がプリインストールされています。

すでに VS Code (デスクトップまたはウェブ) で作業していて、リモートトンネルに接続したい場合は、Remote - Tunnels 拡張機能を直接インストールして使用できます。拡張機能をインストールしたら、コマンドパレット (F1) を開き、**Remote Tunnels: Connect to Tunnel** コマンドを実行します。アクティブなトンネルを持つ任意のリモートマシンに接続できます。

また、Remote Explorer でリモートマシンを表示することもできます。これは、**Remote Explorer: Focus on Remote View** コマンドでフォーカスできます。

Remote Explorer view with Tunnels

他のリモート開発拡張機能と同様に、リモートマシンの名前は左下の緑色のリモートインジケーターに表示されます。このインジケーターをクリックすると、リモートトンネルコマンドを探索したり、リモート接続を閉じたり、VS Code デスクトップをインストールしたりするオプションも表示されます。

VS Code remote indicator connected to a remote tunnel

コンテナ内のリモートトンネルホストでフォルダを開く

Remote - Tunnels 拡張機能と Dev Containers 拡張機能を組み合わせて使用すると、リモートホスト上のフォルダをコンテナ内で開くことができます。ローカルに Docker クライアントをインストールする必要もありません。

そうするには

  1. リモートホストに Docker をインストールし、ローカルに VS Code と Dev Containers 拡張機能をインストールするための インストール 手順に従ってください。
  2. Remote - Tunnels 拡張機能の Getting Started の手順に従ってトンネルをセットアップし、それに接続してそこでフォルダを開きます。
  3. コマンドパレット (F1, ⇧⌘P (Windows、Linux Ctrl+Shift+P)) から **Dev Containers: Reopen in Container** コマンドを使用します。

Dev Containers クイックスタート の残りの部分はそのまま適用されます。Dev Containers 拡張機能の詳細については、そのドキュメント を参照してください。このモデルがニーズを満たさない場合は、その他のオプションについては リモート Docker ホストでの開発 の記事も参照してください。

よくある質問

Remote Tunnels、VS Code Server、Remote Development の関係は何ですか?

Visual Studio Code の リモート開発 を使用すると、コンテナ、リモートマシン、または Windows Subsystem for Linux (WSL) をフル機能の開発環境として使用できます。

リモート開発を使用すると、ローカルの VS Code インストールが、特定のコマンドの実行を「リモートサーバー」である VS Code Server に移動することで、他のマシン (仮想または物理) 上のソースコードおよびランタイム環境と透過的にやり取りできます。VS Code Server は、リモートエンドポイントに接続すると VS Code によって迅速にインストールされ、リモートワークスペース、マシン、およびファイルシステムと直接やり取りする拡張機能をホストできます。

この VS Code Server バックエンドコンポーネントは、Remote Development 拡張機能によってのみインストールおよび管理されるのではなく、自身で実行できるサービスとしてリリースされました (詳細については そのドキュメント を参照してください)。

VS Code Server へのアクセスにはいくつかのコンポーネントが関係しています。

  • VS Code Server: VS Code のリモートエクスペリエンスを可能にするバックエンドサーバー。
  • Remote - Tunnels 拡張機能: サーバーのインスタンスが実行されているリモートマシンへの接続を容易にする拡張機能。

拡張機能の作成者として、何をすべきですか?

VS Code 拡張機能 API は、ローカル/リモートの詳細を抽象化するため、ほとんどの拡張機能は変更なしで動作します。ただし、拡張機能は任意のノードモジュールまたはランタイムを使用できるため、調整が必要な状況があります。更新が不要であることを確認するために、拡張機能をテストすることをお勧めします。詳細については、リモート開発のサポート を参照してください。

複数のユーザーまたはクライアントが同じリモートインスタンスに同時にアクセスできますか?

いいえ、サーバーのインスタンスは一度に1人のユーザーまたはクライアントによってアクセスされるように設計されています。

トンネルまたはマシンを削除するにはどうすればよいですか?

CLI 経由で実行中のトンネルを停止したい場合は、Ctrl + C を使用してアクティブなトンネルを終了できます。VS Code UI 経由でトンネリングを有効にしている場合は、VS Code で **Remote Tunnels: Turn off Remote Tunnel Access...** コマンドを実行できます。

そのマシンで code tunnel unregister を実行することで、マシンのトンネリングとの関連付けを削除できます。また、任意の VS Code クライアントを開き、Remote Explorer ビューを選択し、削除したいマシンを右クリックして **unregister** を選択することもできます。

トンネルはどのように保護されていますか?

トンネルのホスティングと接続の両方で、両端で同じ Github または Microsoft アカウントによる認証が必要です。どちらの場合も、VS Code は Azure でホストされているサービスへの発信接続を行います。通常、ファイアウォールの変更は不要で、VS Code はネットワークリスナーをセットアップしません。

リモートの VS Code インスタンスから接続すると、トンネルを介して SSH 接続が作成され、エンドツーエンドの暗号化が提供されます。この暗号化の現在の推奨される暗号は CTR モードの AES 256 であり、これを実装するコードは オープンソース です。

基盤となる開発トンネルサービスのセキュリティについては、そのドキュメント で詳しく知ることができます。

トンネリングサービスの利用制限はありますか?

基盤となるトンネリングサービスの悪用を避けるため、トンネル数や帯域幅などのリソースには利用制限が設けられています。ほとんどのユーザーはこれらの制限に到達しないと予想されます。

例えば、現在、アカウントに登録できるトンネルは10個です。新しいトンネルを作成したいが、すでに他の10個が登録されている場合、CLI は使用されていないランダムなトンネルを選択して削除します。この制限は変更される可能性があります。

組織全体でポリシーを設定できますか?

ポート転送へのアクセスを制御したい組織の一員である場合は、ドメイン global.rel.tunnels.api.visualstudio.com へのアクセスを許可または拒否することでそれを行うことができます。

Windows デバイスを使用しているユーザーは、開発トンネルのグループポリシー設定を設定して展開することもできます。詳細については、開発トンネルのドキュメント を参照してください。

トンネルを実行し続けるにはどうすればよいですか?

いくつかのオプションがあります

  • service コマンドを使用してサービスとして実行します。code tunnel service install および code tunnel service uninstall を実行してインストールおよび削除できます。
  • no-sleep オプション code tunnel --no-sleep を使用して、リモートマシンがスリープ状態になるのを防ぎます。

code CLI ドキュメント に記載されているように、code tunnel --help を介して利用可能なすべての CLI コマンドとオプションを探索できます。

トンネリング中に他のリモート開発拡張機能や開発コンテナを使用できますか?

はい!現在、Remote - Tunnels 経由で WSL開発コンテナ に接続できます。