リモートトンネルでの開発

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デスクトップに自動的に組み込まれており、追加の設定は不要です。

    代替ダウンロード

    または、ダウンロードページでスタンドアロンインストールを通じてCLIを入手することもできます。これはVS Codeデスクトップのインストールとは別です。

    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: 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のRemote Developmentを使用すると、コンテナ、リモートマシン、またはWindows Subsystem for Linux (WSL) をフル機能の開発環境として利用できます。

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

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

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クライアントを開き、リモートエクスプローラービューを選択し、削除したいマシンを右クリックしてunregister (登録解除)を選択することもできます。

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

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

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

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

注意

VS Code Tunnelsは常にGitHubまたはMicrosoftアカウント認証を必要としますが、基盤となるMicrosoft Dev Tunnelsサービスは匿名アクセスをサポートしています。匿名アクセスを有効にしてトンネルを作成した場合(例えば、devtunnel CLIを通じて)、トンネルURLを発見した人は誰でも認証なしでマシンにアクセスできます。

このリスクは、AIエージェントが承認のバイパスオートパイロット、または/yoloなどの自動承認モードで構成されている場合に特に深刻です。トンネルエンドポイントに到達した不正なユーザーは、あなたの資格情報と権限を使用してAI支援コマンド実行をトリガーする可能性があります。AI自動承認がアクティブなマシンに接続されたトンネルで匿名アクセスを絶対に有効にしないでください。

組織は、管理対象デバイス全体での匿名トンネルを防ぐために、匿名トンネルアクセスを無効にするグループポリシーを展開できます。Dev Tunnelsグループポリシーの詳細については、こちらをご覧ください。AI固有のエンタープライズポリシーについては、組織のAI設定を参照してください。AIセキュリティ制御の全体像については、セキュリティを参照してください。

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

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

例えば、現在、アカウントに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開発コンテナに接続できます。

© . This site is unofficial and not affiliated with Microsoft.