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 デスクトップ版に自動的に組み込まれているため、追加のセットアップは不要です。

    代替ダウンロード

    または、ダウンロードページから、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 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: トンネルに接続を実行します。アクティブなトンネルを持つ任意のリモートマシンに接続できます。

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

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 拡張機能のはじめにの指示に従って、トンネルをセットアップし、それに接続して、そこでフォルダーを開きます。
  3. コマンドパレット (F1⇧⌘P (Windows, Linux Ctrl+Shift+P)) からDev Containers: コンテナーで再度開くコマンドを使用します。

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

よくある質問

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

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

リモート開発は、特定のコマンドの実行を「リモートサーバー」、つまり VS Code Server に移行することで、ローカルの VS Code インストールが他のマシン (仮想または物理にかかわらず) 上のソースコードおよびランタイム環境と透過的に対話できるようにします。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: リモートトンネルアクセスを無効にする... を実行できます。

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

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

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

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

基盤となる dev tunnels サービスのセキュリティについては、そのドキュメントで詳細を確認できます。

トンネリングサービスには使用制限がありますか?

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

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

組織全体でポリシーを構成できますか?

ポートフォワーディングへのアクセスを制御したい組織に属している場合は、ドメイン `global.rel.tunnels.api.visualstudio.com` へのアクセスを許可または拒否することで制御できます。

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

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

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

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

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

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

はい!現在、Remote - Tunnels を介してWSL および dev containers に接続できます。